0

WPFアプリケーションでユーザー入力を処理し、RoutedEventsなどを操作しています。MSDNのルーティングイベントの概要からトンネリングとバブリングを十分に把握していますが、バブリングイベントで問題が発生しました。MouseDownMouseMove

MouseDownイベントがハンドラーにバブルアップすると、MouseButtonEventArgs.Sourceイベントが発生した現在の要素の子が表示されます。その要素の子を取得する方法はありますか?私は方法で何かを考えていますMouseButtonEventArgs.Source.Source

この場合、入力処理をアプリケーションのできるだけ上に置きたいのですが、それでもイベントが発生した最初の要素に関する情報を取得します。

以下の例:ここで、Grid名前の付いた孫がクリックされ、でイベントを処理したいと思いますParent_MouseDown()。ただし、その場合、イベントのソースについて取得するすべての情報は、grid名前付きの子に関するものです。親から孫に関する情報を入手する方法はありますか?

<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

試しMouseButtonEventArgs.OriginalSourceてみてください常に、イベントが発生した元のソースを指します。

于 2011-10-11T12:10:50.000 に答える