【问题标题】:BringToFront / SetZIndex in Universal Windows App通用 Windows 应用程序中的 BringToFront / SetZIndex
【发布时间】:2015-10-12 20:19:30
【问题描述】:

显然Grid.SetZIndex() 不存在。 ctrl.SetValue(Grid.ZIndexProperty…) 不是。

那么我如何将Grid 的子级带到前面?

【问题讨论】:

  • 正确使用 DOM。或者,如果必须,canvas.zindex
  • 啊,很公平,我刚刚看到了 *-store-apps 标签,我收回了关闭,但您仍然可以正确使用 DOM 并完成相同的操作。
  • @ChrisW。谢谢。但是我该怎么做(当然是在代码隐藏中)?
  • 这完全在于你的元素是如何绘制的,从上到下是从后到前。我个人是 xaml 的忠实粉丝,所以我很少提倡从代码隐藏中调用 UI 元素。

标签: c# xaml windows-store-apps winrt-xaml win-universal-app


【解决方案1】:

ZIndex 仅在 Canvas 控件内有效。

<Canvas>
    <Grid Canvas.ZIndex="0"/>     
    <Grid Canvas.ZIndex="1"/>     
</Canvas>

否则,例如在grid 中,文档大纲中的位​​置决定了 z 索引。也就是说,它在您的 XAML 页面中的位置越晚,它在 Z 索引中的位置就越高。

祝你好运!

【讨论】:

  • 谢谢。但是 a) 根据this answer,它也可以用于 Grid。 b) 那么如何在 Grid 的子项中的某个位置添加子项?
【解决方案2】:

在这种情况下,您可以在 Children 中找到您的 UIElement 并将其移动到顶部:

// Type of parent element could be any your control
public static void MoveUiOnTop(UIElement element, Grid yourParentElement)  
{
   int index = yourParentElement.Children.IndexOf(element);
   if (index != -1)
     yourParentElement.Children.Move((uint)index, (uint)yourParentElement.Children.Count - 1);
}

这个例子写在“膝盖上”,但我不时使用这个小技巧。或者您可以尝试像这样创建扩展:

public static void MoveUiOnTop(this UIElement element, T yourParentElement)

但要注意父元素的类型或不要使用泛型。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-09-15
    • 1970-01-01
    • 2015-11-09
    • 2016-01-24
    • 2015-11-04
    • 1970-01-01
    相关资源
    最近更新 更多