我正在处理WPF应用程序中的用户输入,使用RoutedEvents
,例如MouseDown
,MouseMove
等。我已经很好地掌握了来自{{{}的隧道和冒泡3}},但我遇到了冒泡事件的问题。
当MouseDown
事件冒泡到处理程序时,MouseButtonEventArgs.Source
为我提供了事件来自的当前元素的子元素。有没有办法让那个元素的孩子持有?我正在考虑MouseButtonEventArgs.Source.Source
在这种情况下,我想尽可能地将我的输入处理放在我的应用程序中,但仍然可以获得有关事件来自的初始元素的信息。
下面的示例:此处点击了名为Grandchild的Grid
,我想在Parent_MouseDown()
中处理该事件。但是,在这种情况下,我得到的关于事件来源的所有信息都是关于名为Child的grid
。有没有办法从Parent获取有关孙子的信息?
<Grid x:Name="Parent" MouseDown="Parent_MouseDown">
<Grid x:Name="Child" MouseDown="Child_MouseDown">
<Grid x:Name="Grandchild" MouseDown="Grandchild_MouseDown">
</Grid>
</Grid>
</Grid>
请注意,此示例已简化,因为在我的应用程序中,这些元素属于不同的类,并且驻留在不同的文件中。提前谢谢!
答案 0 :(得分:2)
尝试MouseButtonEventArgs.OriginalSource
它始终指向事件冒泡的原始来源。