1很容易将图钉和任何你喜欢的东西添加到多个图层中,清除这些图层,你可以确保某些项目在别人面前。在Windows 10中,该控件已经消失,并被一个控件所取代,其中包含我真正需要的一半但是,3D和场景(我不使用的东西)
我的第一次尝试是,好吧,MapPolygon有ZIndex,因为它继承自MapElement并实现
internal interface IMapElement
{
System.Boolean Visible { get; set; }
System.Int32 ZIndex { get; set; }
}
很好,让我在UserControl中实现,所以map控件知道如何绘制每个元素。惊喜!那个界面是内部的,除了盯着它,你什么也做不了。
第二个问题,也许他们使用画布来绘制元素,Canvas有一个ZIndex,让我们好吧,不用说它不起作用
pin.SetValue(Canvas.ZIndexProperty);
任何人都可以告诉我UWP MapControl中是否有类似图层的内容,或者是否有办法告诉MapControl在哪个索引中绘制项目?
问候。
答案 0 :(得分:2)
我不确定它是否能解决您的问题,但它确实解决了我的问题,也可能对其他人有所帮助。
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>
答案 1 :(得分:0)
你不能以声明的方式做到这一点吗?请考虑以下XAML:
<maps:MapControl x:Name="myMap" HorizontalAlignment="Left">
<maps:MapItemsControl x:Name="MapItems" ItemsSource="{Binding}">
<maps:MapItemsControl.ItemTemplate>
<DataTemplate>
<Button x:Name="MapItemButton" Background="Transparent">
<StackPanel>
<Border Background="{ThemeResource ApplicationPageBackgroundThemeBrush}">
<TextBlock Text="{Binding Title}"/>
</Border>
<Image Source="{Binding ImageSourceUri}" maps:MapControl.Location="{Binding Location}">
<Image.Transitions>
<TransitionCollection>
<EntranceThemeTransition/>
</TransitionCollection>
</Image.Transitions>
</Image>
</StackPanel>
</Button>
</DataTemplate>
</maps:MapItemsControl.ItemTemplate>
</maps:MapItemsControl>
</maps:MapControl>
在这里,我基本上使用常规XAML功能将图像(mapelements)直接绑定到地图的位置。使用网格图层,堆栈面板和诸如此类的东西来控制最重要的内容,以及其他内容。您还可以通过代码隐藏来构建它。