C# 设置mapcontrol';儿童至上

C# 设置mapcontrol';儿童至上,c#,uwp,uwp-xaml,C#,Uwp,Uwp Xaml,我正在将stackpanel添加到mapcontrol。如下 但之前添加的一些点位于stackpanel的顶部。如何将stackpanel设置为最顶部 XAML: 设置ZIndex的方法无效,因为StackPanel和MapItemsControl中的项目位于不同的主机中 借助实时可视化树,您可以了解它们的具体布局 在上面的屏幕截图中,StackPanel的主机(即第一个Canvas)位于MapOverlyPresenter的主机后面(即插入MapItemsControl的第二个Canvas

我正在将stackpanel添加到mapcontrol。如下

但之前添加的一些点位于stackpanel的顶部。如何将stackpanel设置为最顶部

XAML:


设置
ZIndex
的方法无效,因为
StackPanel
MapItemsControl
中的项目位于不同的主机中

借助实时可视化树,您可以了解它们的具体布局

在上面的屏幕截图中,
StackPanel
的主机(即第一个
Canvas
)位于
MapOverlyPresenter
的主机后面(即插入
MapItemsControl
的第二个
Canvas
)。因此,为了使
堆栈面板位于它们上方,您需要手动将第一个
画布的
ZIndex
设置为
1

一旦理解了这一点,解决方案就变得简单了-

Loaded += (s, e) =>
{
    // GetChildByName comes from
    // https://github.com/JustinXinLiu/Continuity/blob/0cc3d7556c747a060d40bae089b80eb845da84fa/Continuity/Extensions/UtilExtensions.cs#L44
    var layerGrid = mapControl.GetChildByName<Grid>("LayerGrid");
    var canvas1 = layerGrid.Children.First();

    Canvas.SetZIndex(canvas1, 1);
};
Loaded+=(s,e)=>
{
//GetChildByName来自
// https://github.com/JustinXinLiu/Continuity/blob/0cc3d7556c747a060d40bae089b80eb845da84fa/Continuity/Extensions/UtilExtensions.cs#L44
var layerGrid=mapControl.GetChildByName(“layerGrid”);
var canvas1=layerGrid.Children.First();
Canvas.SetZIndex(canvas1,1);
};

希望这有帮助

谢谢,贾斯汀。我发现你什么都知道,哈哈:)这次我还学会了活视觉树。哈哈,谢谢你,我很荣幸是的,LVT非常有用,我一直在用它!
StackPanel sp = new StackPanel();
            sp.Background = new SolidColorBrush(Colors.White);
            sp.CornerRadius = new CornerRadius(15);
            sp.BorderBrush = new SolidColorBrush(Colors.LightGray);
            sp.BorderThickness = new Thickness(1);
            sp.Width = 260;
            sp.MinHeight = 180;
            sp.Padding = new Thickness(10);
            Canvas.SetZIndex(sp, 99999);

mapControl.Children.Add(sp);
            Windows.UI.Xaml.Controls.Maps.MapControl.SetLocation(sp, new Geopoint(new BasicGeoposition { Longitude = (double)fi.geometry.coordinates[0], Latitude = (double)fi.geometry.coordinates[1] }));
            Windows.UI.Xaml.Controls.Maps.MapControl.SetNormalizedAnchorPoint(sp, new Point(0.5, 1));
Loaded += (s, e) =>
{
    // GetChildByName comes from
    // https://github.com/JustinXinLiu/Continuity/blob/0cc3d7556c747a060d40bae089b80eb845da84fa/Continuity/Extensions/UtilExtensions.cs#L44
    var layerGrid = mapControl.GetChildByName<Grid>("LayerGrid");
    var canvas1 = layerGrid.Children.First();

    Canvas.SetZIndex(canvas1, 1);
};