如何在 WPF 中为装饰器设置 Z 顺序索引
Posted
技术标签:
【中文标题】如何在 WPF 中为装饰器设置 Z 顺序索引【英文标题】:How to set the Z order index for adorner in WPF 【发布时间】:2014-04-24 09:36:43 【问题描述】:我正在尝试为装饰器设置 Z 顺序索引,目前装饰器位于最顶层,我想将其更改为它正在装饰的控件的索引。
当我为需要装饰器的控件调用 Panel.GetZIndex(control)
时,它返回 0,这是我没想到的。
当我尝试使用 0 或 int.MinValue 设置装饰器 Z 索引时,它似乎没有任何影响,并且装饰器仍处于最顶层。
装饰器的Z序索引如何设置?
【问题讨论】:
【参考方案1】:我认为也许您可以阅读 MSDN 上的 Adorners Overview 页面。无法更改 Adorner
的 Z-Index 的原因是因为它不是普通视觉树的一部分,实际上,它位于自己的 AdornerLayer
中,始终位于主视觉树的顶部。从链接页面:
装饰器在 AdornerLayer 中渲染,这是一个始终位于被装饰元素或被装饰元素集合之上的渲染表面。
请注意,调用Panel.GetZIndex(control)
不会对Adorner
执行任何操作,因为它不在Panel
中。这与尝试在不在Grid
中的UIElement
上设置Grid.Row
附加属性相同......它不会产生任何效果。
【讨论】:
我知道 XAML 中的 adorners 架构师,其他几个 SO 问题讨论了为 adorners 操作 Z 顺序 我知道装饰器的建筑师...然后你就会知道你不能为他们设置Z-Index
。
这暗示了能够改变 Z 顺序 - ***.com/questions/13209695/…
老兄...如果您问错了问题,我很抱歉,但您问了这个问题,我按“原样”回答。如果您想实现特定的东西,那么您应该提供该信息。我建议您要么尝试链接问题中的建议,要么提出一个新问题,明确说明您实际上试图实现的目标......我猜它可以实现无需更改Adorner
的Z-Index
(这是不可能可能的)。
没问题,只是试图解决 UI 边缘情况,可能只是一起删除装饰器 :)以上是关于如何在 WPF 中为装饰器设置 Z 顺序索引的主要内容,如果未能解决你的问题,请参考以下文章