我正在开发一个使用WPF Bing Maps库的应用程序。我正在处理的地图控件的DataContext
有一个GPS坐标列表(Location
个对象),每个坐标都应该由地图上的Pushpin
元素表示。我希望通过XAML将这些图钉添加到地图中,使用ItemsControl
(为简洁而简化):
<m:Map>
<ItemsControl ItemsSource="{Binding GPSCoordinates}">
<ItemsControl.ItemTemplate>
<DataTemplate>
<m:Pushpin Location="{Binding}">
</DataTemplate>
</ItemsControl.ItemTemplate>
</ItemsControl>
</m:Map>
但这不起作用,因为Pushpin
元素不会直接添加到Map
元素;相反,它们由ItemsControl
的{{1}}和ItemsPanel
元素本身封装。 有没有办法生成项目列表并将ItemsControl
中定义的项目直接添加到DataTemplate
的父级?
换句话说,我希望Visual Tree看起来像这样:
ItemsControl
而不是:
<m:Map>
<m:Pushpin />
<m:Pushpin />
...
</m:Map>
答案 0 :(得分:1)
虽然它没有将Pushpins添加为Map控件的直接子项,但MapItemsControl
正是您所寻找的:
<m:Map ...>
<m:MapItemsControl ItemsSource="{Binding GPSCoordinates}">
<m:MapItemsControl.ItemTemplate>
<DataTemplate>
<m:Pushpin Location="{Binding}"/>
</DataTemplate>
</m:MapItemsControl.ItemTemplate>
</m:MapItemsControl>
</m:Map>