我有一个带有wpf地图控件和画布的网格,用于在地图上绘制标记。
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="*"></RowDefinition>
</Grid.RowDefinitions>
<UserControl Grid.Row="0" Content="{Binding CurrentMap}" />
<UserControl Grid.Row="0" Content="{Binding DrawningCanvas}" />
</Grid>
现在我需要在地图上使用超过1层。
我应该使用什么wpf控件来绑定到DataContext中的ObservableCollection<Canvas>
并将它们全部绘制在一起?
答案 0 :(得分:1)
ObservableCollection
是数据项的集合。 Canvas
是一个UI控件。因此,您永远不应该拥有包含UI元素的数据项集合。
相反,您可以拥有Marker
数据类,其中包含标记位置的X
和Y
属性,可能需要Name
和ImageSource
属性它在UI中会是什么样子。然后,您可以将ObservableCollection
类型Marker
命名为Markers
,以便绑定到ItemsSource
的{{1}}属性。最后,您可以将ItemsControl
设置为Canvas
的{{1}}:
ItemsPanel
我真的不知道为什么你想拥有多个图层,因为你可以在同一个图层上叠加多个项目,但如果你真的需要多个图层,那么你可以添加更多的ItemsControl
个元素如上所示。