C# 在wpf中单击鼠标时,如何使用较低的zindex进行控制?

C# 在wpf中单击鼠标时,如何使用较低的zindex进行控制?,c#,wpf,controls,mouseevent,z-index,C#,Wpf,Controls,Mouseevent,Z Index,我在同一画布中有几个控件,可能一个控件被另一个控件覆盖。它们都具有相同的zIndex,但对于已加载的订单,有些是向上的,有些是向下的。 我的问题是Acontrol是否超过了Bcontrol,我单击了它们,但只有A获得了click事件。我怎样才能让B也参加比赛?谢谢。没有机会。即使您将MouseClick标记为未处理,它也将路由到父元素(画布),而不是同级元素。唯一的方法是命中测试。当用户单击一个控件时,您应该确定该控件下是否有其他控件 您必须对回调使用命中测试。此选项允许您跳过Acontrol以

我在同一画布中有几个控件,可能一个控件被另一个控件覆盖。它们都具有相同的zIndex,但对于已加载的订单,有些是向上的,有些是向下的。
我的问题是Acontrol是否超过了Bcontrol,我单击了它们,但只有A获得了click事件。我怎样才能让B也参加比赛?谢谢。

没有机会。即使您将MouseClick标记为未处理,它也将路由到父元素(画布),而不是同级元素。唯一的方法是命中测试。当用户单击一个控件时,您应该确定该控件下是否有其他控件


您必须对回调使用命中测试。此选项允许您跳过Acontrol以查找B控件。如果找到它,您可以将b控件视为单击的控件。

如果您只希望后面的控件获取事件,那么对于第一个控件前面的所有控件,您必须为后面的控件设置
ishitestvisible=False
,以获取事件-但这不是您想要的

如果您希望它们都获得事件,请将整个UI视为元素树。你所说的所有这些控件都是兄弟。单击某个对象时,父对象是第一个得到通知的对象,如果它不处理该单击,则会将其传递给该父对象在该鼠标位置的可见子元素,依此类推,直到处理完毕。阻止被单击的子级处理鼠标单击的唯一方法是让所有同级的公共父级首先处理事件


然后,您必须在父级处理程序中执行一些巧妙的操作,以调用鼠标下所有子元素的单击事件-问题在于,尽管框架用于确定鼠标下的控件,您现在必须完成这项艰巨的工作。

您是否尝试过将MouseClick事件中的handled属性设置为false?