4

ボタンを含む WPF UserControl があります。ボタンを含む WPF ウィンドウもあります。UserControl と Window の両方で、XAML に次の行を配置します。

UIElement.PreviewMouseLeftButtonDown="OnPreviewMouseLeftButtonDown"

「OnPreviewMouseLeftButtonDown」では、args.Source を表示するデバッグ プリントを配置しました。

ウィンドウ内のボタンをクリックすると、そのボタンが EventArgs ソースとして取得されます。ただし、UserControl 内のボタン (これもウィンドウ内にあるため、テストできますが、同じウィンドウではありません) をクリックすると、UserControl が EventArgs ソースとして取得されます。

UserControl の周りに (snoop を使用して) デコレータがあるかどうかを確認するのにうんざりしましたが、それは簡単に見えます。

WPF の UserControl の何が特別なのか理解できないため、正しい送信者を取得できません。誰かが私に何が欠けているのか説明してもらえますか?

4

2 に答える 2

0

e.OriginalSource上記のように使用します。ボタンを見つける必要がある場合はVisualTreeHelper.GetParent、実際の Button コントロールを見つけるために使用できます。

于 2011-09-21T20:02:24.693 に答える