在wpf中单击鼠标时如何获得较低zindex的控制?

Cue*_*ero 6 c# wpf controls z-index mouseevent

我在同一画布上有多个控件,并且可能其中一个控件被另一个控件覆盖。它们都具有相同的 zIndex,但对于加载的顺序,有些向上,有些向下。我的问题是,如果 Acontrol 超过 Bcontrol,并且我单击它们,但只有 A 获得单击事件。我怎样才能让 B 也获得该事件?谢谢。

Ala*_*ain 5

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

如果您希望它们都获得事件,请将整个 UI 视为一棵元素树。您所谈论的所有这些控件都是兄弟控件。当单击某些内容时,父级是第一个收到通知的,如果它不处理单击,它将向下传递到该父级在该鼠标位置的可见子元素,依此类推,直到它被处理。阻止被单击的子级处理鼠标单击的唯一方法是让所有兄弟级的共同父级首先处理该事件。

然后,您将必须在父级处理程序中做一些聪明的事情来调用可以在鼠标下方找到的所有子元素的单击事件 - 问题是,而框架用于完成确定哪个控件在鼠标下方的艰苦工作,你现在必须做这项艰苦的工作。