简体   繁体   English

如何改变Wpf AdornerLayer孩子的z顺序?

[英]How to change z-order of Wpf AdornerLayer children?

I have an image editing application, and I have custom adorners which get added to an AdornerLayer. 我有一个图像编辑应用程序,我有自定义的装饰器,添加到AdornerLayer。 When the user clicks on an Adorner, I want to bring it to top - meaning if it is dragged over another adorner, I want the first click to be caught by the topmost adorner. 当用户点击Adorner时,我想将其置于顶部 - 这意味着如果它被拖到另一个装饰器上,我希望第一个点击被最顶层的装饰者捕获。

I can't figure out how to change the z-order of the child elements of the AdornerLayer. 我无法弄清楚如何更改AdornerLayer的子元素的z顺序。 It doesn't seem to allow me to sort them. 它似乎不允许我对它们进行排序。 Even if I remove and re-add the Adorner, it doesn't get topmost. 即使我删除并重新添加了Adorner,它也不是最重要的。

I had a similar problem, but just needed a specific ordering of my adorners. 我有类似的问题,但只需要我的装饰者的特定订单。 I ended up using reflection to set the orders: 我最终使用反射设置订单:

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 });

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

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM