只是一个前言,我意识到我正在以非 WPF 友好的方式执行我的解决方案。在一个完美的世界里,我会使用 MapItemsControl。
好的,所以我正在为 WPF 使用 Bing Maps 控件。这是我的 Bing 地图 XAML
<m:Map CredentialsProvider="12345"
x:Name="myMap" UseInertia="True" Loaded="Map_Loaded"
Width="1920" Height="990" Canvas.Top="110" ZoomLevel="5" Center="39.8282,-98.5795">
<m:MapLayer x:Name="MyPushPinLayer">
<Canvas x:Name="ContentPopup" Visibility="Collapsed" Width="250">
<Border Background="White" BorderThickness="1" BorderBrush="Gray" Width="250" Padding="5">
<StackPanel Canvas.Left="20" Canvas.Top="10">
<TextBlock x:Name="ContentPopupText" FontSize="18" FontWeight="Bold" Foreground="#CF0000" Width="240" TextWrapping="Wrap">
</TextBlock>
<TextBlock x:Name="ContentAddress" FontSize="13" Foreground="Black" Width="240" TextWrapping="Wrap"/>
<TextBlock x:Name="ContentQuestions" FontSize="13" Foreground="Black" Width="240" TextWrapping="Wrap" />
</StackPanel>
</Border>
</Canvas>
</m:MapLayer>
</m:Map>
基本上,这会绘制一张地图,并且我有一个地图播放器,单击时将保存工具提示信息。在我后面的代码中,我从服务中提取数据并按程序将图钉添加到地图中,如下所示:
Pushpin pin = new Pushpin();
pin.Location = new Microsoft.Maps.MapControl.WPF.Location(location.latitude, location.longitude);
pin.Content = location.name;
pin.Template = LGPushPinTemplate;
pin.MouseDown += new MouseButtonEventHandler(pin_MouseDown);
myMap.Children.Add(pin);
很简单。但是,因为我在加载地图后在 XAML 和子项中定义弹出层,所以图钉最后出现在地图的子结构中,因此模式信息框出现在任何图钉下方。有没有办法重新排列这些项目的 z 顺序,而无需从地图的子集合中添加/删除所有内容?|