我正在使用 Windows Phone 8 中的诺基亚地图控件。这是我目前拥有的代码(仅相关部分)
C#
public ObservableCollection<LocationViewModel> ItemLocations
{
get
{
return new ObservableCollection<LocationViewModel>()
{
new LocationViewModel()
{
Display = "MVVM Test",
Location = new GeoCoordinate(43.07441, -88.25609)
}
};
}
}
XAML:
<maps:Map Center="{Binding MapCenter, Mode=TwoWay}"
ZoomLevel="{Binding ZoomLevel}">
<maptk:MapExtensions.Children>
<maptk:MapItemsControl ItemsSource="{Binding Path=ItemLocations}">
<maptk:MapItemsControl.ItemTemplate>
<DataTemplate>
<maptk:Pushpin GeoCoordinate="{Binding Location}" Content="{Binding Display}" />
</DataTemplate>
</maptk:MapItemsControl.ItemTemplate>
</maptk:MapItemsControl>
</maptk:MapExtensions.Children>
</maps:Map>
现在,当地图页面加载时,它以正确的位置为中心,但是,无论我对 ItemLocations 列表做什么,我都没有在地图上显示任何点。我继续使用一些静态点静态定义 maptk:MapItemsControl.Items 并且它工作正常,只有当我尝试绑定时(如上所示)它才会失败。
该解决方案将 Caliburn Micro 用于 MVVM。正如您在上面的示例中看到的,我在 ViewModel 中硬编码了位置列表,但从未调用过get ,这对我来说很神秘。如果我只将 PushPins 定义为 MapExtensions.Children 的子级,它就可以工作。
我开始怀疑 ItemsSource 是否不可绑定,但我觉得这很荒谬。请帮忙
提前致谢