Fir*_*gon 0 silverlight mvvm bing-maps pushpin windows-phone-7
我的WP7应用程序中有要求在多个数据源的bing映射上显示图钉,我不确定这样做的最佳方法.
例如,它会是这样的,我从Web服务接收人员列表,建筑物列表,POI列表等.我需要在他们自己的视图中单独显示这些,但也在地图上显示它们每种类型都有不同的图像.
我正在尝试使用MVVM方法,因此有一个Person类,一个建筑类等等,每个都有一个位置.然后我为每个类型都有一个ObservableCollection,因此使用数据绑定很容易为每个类型执行View.
目前我只有一个ViewModel,但我的第一个想法是我认为每个类型应该有一个ViewModel.那么PersonViewModel,BuildingViewModel在这里?但是,Map View需要从这些视图中获取信息,我不确定如何将视图绑定到多个ViewModel,或者即使这是合理的.
MapItemsControl似乎也只能绑定到一个东西,所以如何将它绑定到这样的多个不同的数据源?我想我可以创建一个简单的图钉类,但这意味着每个类型的数据都重复,我最终希望能够点击图钉来显示图钉的细节,所以我希望将这些类型分开
任何关于前进道路的指针都非常赞赏
MapItemsControl正如你所说,使用a 就是这样做的.这很容易.你想要的是一个ViewModel,你的每个类型都有一个ObservableCollection,正如你所说的那样.
所以我猜你的问题是你不明白如何使用Styles和ItemTemplates.
如果你想要的是,每个不同类型都有相同的样式,那么只需定义一个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>
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1060 次 |
| 最近记录: |