1可以很容易地将图钉和任何您喜欢的东西添加到多个图层,清除这些图层,并可以确保某些项位于其他项之前。在Windows 10中,该控件消失了,取而代之的是我真正需要的东西的一半,但带有3D和场景(我不使用的东西)
我的第一次尝试是,好吧,MapPolygon具有ZIndex,因为它继承自MapElement并实现
internal interface IMapElement
{
System.Boolean Visible { get; set; }
System.Int32 ZIndex { get; set; }
}
太好了,让我们在UserControl中实现它,以便地图控件知道如何绘制每个元素。惊喜!该界面是内部的,您只能凝视它。
第二点,也许他们使用画布绘制元素,并且Canvas具有ZIndex,好吧,不用说它没有用
pin.SetValue(Canvas.ZIndexProperty);
有人可以告诉我UWP MapControl中是否有类似图层的内容,或者是否可以告诉MapControl在哪个索引中绘制项目?
问候。
最佳答案
我不确定它是否能解决您的问题,但绝对可以解决我的问题,这也可能对其他人有帮助。
public class MapControl : DependencyObject
{
#region Dependency properties
public static readonly DependencyProperty ZIndexProperty = DependencyProperty.RegisterAttached("ZIndex", typeof(int), typeof(MapControl), new PropertyMetadata(0, OnZIndexChanged));
#endregion
#region Methods
public static int GetZIndex(DependencyObject obj)
{
return (int)obj.GetValue(ZIndexProperty);
}
private static void OnZIndexChanged(DependencyObject d, DependencyPropertyChangedEventArgs e)
{
ContentControl us = d as ContentControl;
if (us != null)
{
// returns null if it is not loaded yet
// returns 'DependencyObject' of type 'MapOverlayPresenter'
var parent = VisualTreeHelper.GetParent(us);
if (parent != null)
{
parent.SetValue(Canvas.ZIndexProperty, e.NewValue);
}
}
}
public static void SetZIndex(DependencyObject obj, int value)
{
obj.SetValue(ZIndexProperty, value);
}
#endregion
}
命名空间
xmlns:maps="using:Windows.UI.Xaml.Controls.Maps"
xmlns:mapHelper="using:yournamespace"
控制
<maps:MapControl>
<maps:MapItemsControl ItemsSource="...">
<maps:MapItemsControl.ItemTemplate>
<DataTemplate x:DataType="...">
<YourTemplate mapHelper:MapControl.ZIndex="{x:Bind ZIndex, Mode=OneWay}" />
</DataTemplate>
</maps:MapItemsControl.ItemTemplate>
</maps:MapItemsControl>
</maps:MapControl>