Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/257.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 操纵装饰器的ZIndex以更改控件之间的单击检测_C#_.net_Wpf_Data Binding - Fatal编程技术网

C# 操纵装饰器的ZIndex以更改控件之间的单击检测

C# 操纵装饰器的ZIndex以更改控件之间的单击检测,c#,.net,wpf,data-binding,C#,.net,Wpf,Data Binding,嘿,我有一张画布,上面有一堆作为孩子添加的ContentControl。每个ContentControl顶部都有一个装饰器,用于检测ContentControl上的单击(以及其他功能)。我想更改ContentControl的ZIndex,从而更改检测单击的ContentControl。我更改了装饰器的ZIndex,但是当我单击看起来位于顶部的ContentControl(更高的ZIndex)时,后面的控件会检测到单击,这与ZIndex重新排序之前的方式相同 那么,我该如何解决这个问题呢 这是我用

嘿,我有一张画布,上面有一堆作为孩子添加的ContentControl。每个ContentControl顶部都有一个装饰器,用于检测ContentControl上的单击(以及其他功能)。我想更改ContentControl的ZIndex,从而更改检测单击的ContentControl。我更改了装饰器的ZIndex,但是当我单击看起来位于顶部的ContentControl(更高的ZIndex)时,后面的控件会检测到单击,这与ZIndex重新排序之前的方式相同

那么,我该如何解决这个问题呢

这是我用来更改装饰器的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 });

由于某些原因,from.

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

从。

允许重新排序装饰条的一种快速方法是手动删除装饰条,然后按我们希望的方式添加装饰条。我想知道是否有更优雅的解决方案。允许重新排序装饰条的一种快速方法是手动删除装饰条,然后按照我们想要的方式添加装饰条。我想知道是否有更优雅的解决方案。