0

我正在使用 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 是否不可绑定,但我觉得这很荒谬。请帮忙

提前致谢

4

1 回答 1

2

我和你有同样的问题,花了一些时间解决它。检查这个MVVM Windows Phone 8 - 将一组图钉添加到地图中,也许这也会对您有所帮助。

于 2013-05-08T13:16:13.693 回答