获取RoutedEvent Source作为处理程序的孙子

时间:2011-10-11 12:02:33

标签: c# wpf routedevent

我正在处理WPF应用程序中的用户输入,使用RoutedEvents,例如MouseDownMouseMove等。我已经很好地掌握了来自{{{}的隧道和冒泡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>

请注意,此示例已简化,因为在我的应用程序中,这些元素属于不同的类,并且驻留在不同的文件中。提前谢谢!

1 个答案:

答案 0 :(得分:2)

尝试MouseButtonEventArgs.OriginalSource它始终指向事件冒泡的原始来源。