我正在处理 WPF 应用程序中的用户输入,使用RoutedEvents
诸如MouseDown
等MouseMove
。我已经很好地掌握了MSDN 的 Routed Events Overview中的隧道和冒泡,但是我遇到了冒泡事件的问题。
当MouseDown
事件冒泡到处理程序时,MouseButtonEventArgs.Source
给我事件来自的当前元素的子元素。有没有办法抓住那个元素的孩子?我在想一些事情MouseButtonEventArgs.Source.Source
在这种情况下,我想将我的输入处理尽可能放在我的应用程序中,但仍然可以获得有关事件来自的初始元素的信息。
下面的一个例子:这里点击了Grid
命名的孙子,我想在Parent_MouseDown()
. 但是,在这种情况下,我得到的关于事件来源的所有信息都是关于grid
命名的 Child。有没有办法从父母那里获得有关孙子的信息?
<Grid x:Name="Parent" MouseDown="Parent_MouseDown">
<Grid x:Name="Child" MouseDown="Child_MouseDown">
<Grid x:Name="Grandchild" MouseDown="Grandchild_MouseDown">
</Grid>
</Grid>
</Grid>
请注意,此示例已简化,因为在我的应用程序中,这些元素属于不同的类,并且驻留在不同的文件中。提前致谢!