【问题标题】:BingMapControl WP7 XAML Databinding Center必应地图控件 WP7 XAML 数据绑定中心
【发布时间】:2011-08-10 06:53:59
【问题描述】:

我声明了以下 XAML:

       <controls:PivotItem Header="map">
            <my:Map x:Name="map"
                    CredentialsProvider="Hidden"
                    Mode="Road"
                    Center="{Binding AppState.MapCenter}"
                    ZoomLevel="15">
                <my:Pushpin Location="{Binding AppState.MapCenter}" />                        
            </my:Map>
        </controls:PivotItem>

绑定工作正常 - 除了地图没有保持居中(最初它使用 Center 属性上的绑定正确居中)。该应用程序允许用户在一系列具有不同地理坐标的记录中移动。发生这种情况时,绑定的图钉会适当移动,但最终它会移出地图,因为地图不会自行重新居中。如何使用数据绑定使地图重新居中?

【问题讨论】:

    标签: xaml data-binding windows-phone-7 bing-maps


    【解决方案1】:

    我找到了第二个更好的解决方案,可以实现数据绑定。我将 Center 的绑定模式设置为 TwoWay:

    Center="{Binding MapCenter, Mode=TwoWay}"
    

    这意味着我无法直接绑定到我正在映射的记录上的 GeoCoordinate 值(因为如果我通过平移移动地图中心,我不希望更新该值)。相反,我必须在我的视图模型中有一个单独的属性来绑定,当用户滚动数据时,我会使用所选记录中所需的 GeoCoordinate 值不断更新该属性。

    奇怪的是,Center 属性需要双向绑定,而图钉在没有两次绑定的情况下也能正常工作。

    【讨论】:

    • 尽管从文档中看不是很清楚,但单向绑定似乎工作起来就好像它是地图的一次性绑定。您为中心设置另一个读/写属性的解决方案帮助了我。
    【解决方案2】:

    在这个阶段,我发现的唯一解决方案是在每次映射点更改时在代码中设置地图视图,如下所示:

    map.SetView(ViewModelLocator.AppStateStatic.MapCenter, 15);
    

    我希望它能够与数据绑定一起使用。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-05-31
      相关资源
      最近更新 更多