0

我正在处理 WPF 应用程序中的用户输入,使用RoutedEvents诸如MouseDownMouseMove。我已经很好地掌握了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>

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

4

1 回答 1

2

Try MouseButtonEventArgs.OriginalSource It always point to the original source from where the event bubbled.

于 2011-10-11T12:10:50.000 回答