如何解决操纵装饰器的ZIndex来更改控件之间的单击检测
|| 嘿,我有一个Canvas,其中添加了一堆ContentControls作为子级。每个ContentControl的顶部都有一个装饰器,用于检测对ContentControl的点击(以及其他功能)。我想更改ContentControl的ZIndex,然后更改哪个ContentControl检测到单击。我更改了装饰器的ZIndex,但是当我单击看起来位于顶部的ContentControl(较高的ZIndex)时,后面的控件检测到该单击,这与重新排列ZIndex之前的方式相同。 那么,我该如何解决呢? 这是我用来更改Adorner的ZIndex的代码:Panel.SetZIndex(mSelectionAdorner,(int)RegionContent.ZIndex);
mSelectionAdorner是对位于ContentControl顶部的装饰器的私有引用。
谢谢。
解决方法
由于某种原因,Panel.ZIndex不能用于装饰者的订购。装饰控件的相对ZIndex也不影响装饰程序的顺序,因为装饰程序被提升并放置在所有实际控件之上的装饰层中。
我有一个类似的问题,但是只需要我的装饰者的特定顺序即可。我最终使用反射来设置订单:
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 });
来自AdornerLayer中的装饰者ZOrder。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。