在wpf地图控件上绘制多个图层

时间:2013-12-04 09:22:42

标签: c# .net wpf google-maps gis

我有一个带有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>并将它们全部绘制在一起?

1 个答案:

答案 0 :(得分:1)

你似乎有些困惑。 ObservableCollection是数据项的集合。 Canvas是一个UI控件。因此,您永远不应该拥有包含UI元素的数据项集合。

相反,您可以拥有Marker数据类,其中包含标记位置的XY属性,可能需要NameImageSource属性它在UI中会是什么样子。然后,您可以将ObservableCollection类型Marker命名为Markers,以便绑定到ItemsSource的{​​{1}}属性。最后,您可以将ItemsControl设置为Canvas的{​​{1}}:

ItemsPanel

我真的不知道为什么你想拥有多个图层,因为你可以在同一个图层上叠加多个项目,但如果你真的需要多个图层,那么你可以添加更多的ItemsControl个元素如上所示。