0

我的 WP7 应用程序需要在来自多个数据源的 bing 地图上显示图钉,但我不确定执行此操作的最佳方法。

因此,例如,它会是这样的,我从网络服务收到人员列表、建筑物列表、兴趣点列表等。我需要在他们自己的视图中单独显示这些,但也要在地图上显示它们每种类型都有不同的图像。

我正在尝试使用 MVVM 方法,因此有一个 Person 类、一个建筑物类等等,每一个都有一个位置。然后,我为这些类型中的每一个都有一个 ObservableCollection,因此使用数据绑定很容易为每个类型执行一个视图。

目前我只有一个 ViewModel,但我的第一个想法是我认为我真的应该每种类型都有一个 ViewModel。那么 PersonViewModel、BuildingViewModel 在这里呢?然而,地图视图需要从这些视图中的每一个中获取信息,我不确定如何将视图绑定到这样的多个 ViewModel,或者即使这是明智的。

MapItemsControl 似乎也只能绑定到一件事,那么我怎样才能将它绑定到多个不同的数据源呢?我以为我可以创建一个简单的图钉类,但这意味着要复制每种类型的数据,我最终希望能够单击图钉以显示图钉的详细信息,因此希望将类型分开

非常感谢任何有关前进道路的指示

4

1 回答 1

5

正如您所说,使用 aMapItemsControl就是这样做的方法。这很容易。你想要的是一个 ViewModel,它为你的每种类型都有一个 ObservableCollection,正如你所说的那样。

所以我猜你的问题是你不明白如何使用样式和项目模板。

如果您想要的是为每种不同的类型使用相同的样式,那么只需定义一个ItemTemplate应用到每个MapItemsControl.ItemTemplate. 同样,如果您想要的话,您可以定义一个全局应用于每个图钉的自定义样式。

<Grid.Resources>
    <DataTemplate x:Name="PushpinItemTemplate">
        <maps:Pushpin Location="{Binding Location}" Tap="Pushpin_Tap" Style="{StaticResource PushpinStyle}" />
    </DataTemplate>
</Grid.Resources>

...

<maps:Map>
    <maps:MapLayer>
        <maps:MapItemsControl ItemsSource="{Binding People}" ItemTemplate="{StaticResource PushpinItemTemplate}" />
        <maps:MapItemsControl ItemsSource="{Binding Buildings}" ItemTemplate="{StaticResource PushpinItemTemplate}" />
    </maps:MapLayer>
</maps:Map>
于 2011-09-05T08:57:23.557 回答