传递鼠标事件给重叠控件

4
我的WPF用户控件由几个子组件组成,它们以重叠的方式放置在一起(有时完全重叠),但它们在视觉树上处于同一级别(每个子组件的父对象都是主网格)。我希望将鼠标事件从最上面的子组件传递到最下面的子组件,但默认的WPF行为通过视觉树路径传递它们,而不是通过它们的Z顺序。不幸的是,无法嵌入一个组件到另一个组件中(以利用默认机制)。我该如何解决这个问题?
最好的问候-- Spook。

为什么不能嵌入它们? - H.B.
1
@H.B.:一般情况下它们不完全重叠,所以才这样做。 - Jon
2个回答

2
一个简单的解决方案是在父级Grid中处理所有事件,而不在子控件中附加任何处理程序,并根据子控件的z-order手动“路由”事件到网格的子控件。
这将需要大量的手动工作,但我似乎找不到其他实现自定义路由策略的方法在WPF中。

1
如果您的特定情况要求所有子组件在视觉树中处于相同级别,则最好的方法可能是将IsHitTestVisible标志设置为所有子组件的false,然后在最高级别上捕获鼠标事件,再手动选择适合鼠标事件的子组件。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接