【问题标题】:How to change z-order of Wpf AdornerLayer children?如何更改 Wpf AdornerLayer 孩子的 z 顺序?
【发布时间】:2012-06-20 17:38:16
【问题描述】:

我有一个图像编辑应用程序,并且我有添加到 AdornerLayer 的自定义装饰器。当用户点击一个装饰器时,我想把它带到顶部 - 这意味着如果它被拖到另一个装饰器上,我希望第一次点击被最上面的装饰器捕获。

我不知道如何更改 AdornerLayer 的子元素的 z 顺序。它似乎不允许我对它们进行排序。即使我删除并重新添加装饰器,它也不会成为最上面的。

【问题讨论】:

  • 其他(非顶级)装饰者也需要赶上这个活动吗?
  • 没有。我希望最近点击的装饰器成为最顶部并获取对其可见部分的所有点击。

标签: c# wpf adornerlayer


【解决方案1】:
【解决方案2】:

我遇到了类似的问题,但只需要对我的装饰器进行特定排序。我最终使用反射来设置订单:

var setZOrderMethodInfo = adornerLayer.GetType().GetMethod("SetAdornerZOrder", System.Reflection.BindingFlags.NonPublic |  System.Reflection.BindingFlags.Instance);     
setZOrderMethodInfo.Invoke(adornerLayer, new object[] { adorner1, 0 });     
setZOrderMethodInfo.Invoke(adornerLayer, new object[] { adorner2, 1 });

来自http://social.msdn.microsoft.com/Forums/en/wpf/thread/40bff84e-c4b5-4ea0-87ea-43461df9f24b

【讨论】:

  • 8 年过去了,但这是实现它的唯一方法。
猜你喜欢
  • 2018-10-16
  • 2011-03-31
  • 1970-01-01
  • 1970-01-01
  • 2011-05-31
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多