好的,奇怪的问题在这里。我有一张地图,我绑定到中心和缩放级别。但是,绑定到ZoomLevel会产生奇怪的后果。
如果我在Center绑定之前移动ZoomLevel绑定,它会终止Center绑定。在视图模型中设置中心无效,并且移动地图不会更新Center属性。
如果我保持如图所示,Center和ZoomLevel正确绑定,但MapItemsControl则没有。当我搜索时,搜索结果的图钉不会显示在地图上。
如果我完全删除ZoomLevel绑定,一切正常 - 中心绑定正确,并且图钉显示出来。但是,我现在没有对缩放级别进行编程控制。
这让我完全不知所措。我已经尝试将其更改为OneWay(我不需要知道视图模型中的缩放级别,只需设置它),但是在视图模型中设置缩放级别不再缩放地图,这也很奇怪。我可以将中心更改为单向,并且在视图模型中更改后仍然会重新定位地图。
<map:MapControl Grid.Row="0"
Center="{Binding Path=Center, Mode=TwoWay}"
ZoomLevel="{Binding Path=ZoomLevel, Mode=TwoWay}"
MapServiceToken="{StaticResource ResourceKey=MapServiceToken}">
<map:MapItemsControl ItemsSource="{Binding Path=SearchResults}">
<map:MapItemsControl.ItemTemplate>
<DataTemplate>
<Button Background="Red" Content="{Binding Path=Name}" map:MapControl.Location="{Binding Path=Point}"></Button>
</DataTemplate>
</map:MapItemsControl.ItemTemplate>
</map:MapItemsControl>
</map:MapControl>
编辑:对于那些感兴趣的人,在视图模型的构造函数中将ZoomLevel初始化为非零值似乎可以解决这个问题。