我声明了以下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属性上的绑定正确居中)。该应用程序允许用户浏览具有不同GeoCoordinates的一系列记录。当发生这种情况时,绑定的Pushpin会相应地移动,但最终会从地图移开,因为地图不会重新居中。如何使用数据绑定让地图重新定位?
答案 0 :(得分:5)
我找到了第二个更好的分辨率,可以实现数据绑定。我将Center的绑定模式设置为TwoWay:
Center="{Binding MapCenter, Mode=TwoWay}"
这意味着我无法直接绑定到我映射的记录上的GeoCoordinate值(因为如果我通过平移移动地图中心,我不希望更新该值)。相反,我必须在我的视图模型中有一个单独的属性来绑定,当用户滚动数据时,我会使用所选记录中所需的GeoCoordinate值进行更新。
奇怪的是,Center属性需要双向绑定,而图钉在没有两个绑定的情况下工作正常。
答案 1 :(得分:0)
在这个阶段,我发现的唯一解决方案是每次映射点改变时在代码中设置地图视图,如下所示:
map.SetView(ViewModelLocator.AppStateStatic.MapCenter, 15);
我希望它可以使用数据绑定。