我试图让一个地图叠加在Windows Phone 8个工作使用MVVM代码结构。 我似乎无法得到MapOverlay的会有地理座标属性绑定到我的视图模型正确,我不能明白为什么。
作为支架的XAML是:
标题:
xmlns:maps="clr-namespace:Microsoft.Phone.Maps.Controls;assembly=Microsoft.Phone.Maps"
码:
<maps:Map x:Name="Map" ZoomLevel="6" Height="500" Width="500" CartographicMode="Terrain" Center="{Binding MapCenter, Converter={StaticResource GpsCoordinateConverter}, Mode=TwoWay}">
<maps:Map.Layers>
<maps:MapLayer>
<maps:MapOverlay PositionOrigin="1,1" GeoCoordinate="{Binding MapCenter, Converter={StaticResource GpsCoordinateConverter}, Mode=OneWay}">
<Ellipse Fill="Blue" Height="20" Width="20" Opacity="50" />
</maps:MapOverlay>
</maps:MapLayer>
</maps:Map.Layers>
</maps:Map>
该GpsCoordinateConverter
只是一个很简单的类,它改变从我的视图模型为数据类型System.Device.Location.GeoCoordinate
,地图控制预期。 在地图的中间装订工作正常,但在覆盖会有地理座标将不能结合和蓝色圆圈只是坐在在地图的左上角。
我已经验证PropertyChanged事件被解雇了我的模型中,通过调试和因为地图的中心本身正在更新,甚至试图通过零触发无济于事各个领域。
我在调试检查,并为MapOverlay会有地理座标属性似乎总是空。 我试着加入以下代码隐藏这使我想要它了一圈,但我似乎无法得到基于事件这样的情况发生?
GpsCoordinateConverter converter = new GpsCoordinateConverter();
Map.Layers[0][0].GeoCoordinate = (GeoCoordinate)converter.Convert(((ViewModel.ReportViewModel)DataContext).MapCenter, typeof(GeoCoordinate), null, null);
没有人知道为什么会或如何解决这一问题? 我不想放弃MVVM架构这一点。