RoutedEventArgs.OriginalSource プロパティ
定義
重要
一部の情報は、リリース前に大きく変更される可能性があるプレリリースされた製品に関するものです。 Microsoft は、ここに記載されている情報について、明示または黙示を問わず、一切保証しません。
イベントを発生させたオブジェクトへの参照を取得します。 これは多くの場合、アプリ UI で宣言された要素ではなく、コントロールのテンプレート部分です。
public:
property Platform::Object ^ OriginalSource { Platform::Object ^ get(); };
IInspectable OriginalSource();
public object OriginalSource { get; }
var object = routedEventArgs.originalSource;
Public ReadOnly Property OriginalSource As Object
プロパティ値
イベントを発生させたオブジェクト。
注釈
ルーティング イベントがイベント ルートをバブルアップすると、 sender
はイベント発生オブジェクトと同じオブジェクトではなくなります。 代わりに、 sender
は、呼び出されるハンドラーがアタッチされている オブジェクトです。
は興味深くない場合 sender
があり、代わりに、ポインター イベントが発生したときにポインターがオーバーする可能性のある子オブジェクト、またはユーザーがキーボード キーを押したときにフォーカスを保持した大きな UI 内のオブジェクトなどの情報に関心があります。 このような場合は、 プロパティの値を OriginalSource
使用できます。 ルート上のすべてのポイントで、 OriginalSource
ハンドラーがアタッチされているオブジェクトではなく、イベントを発生させた元のオブジェクトを報告します。 ただし、UIElement の入力イベントでは、そのイベント発生元のオブジェクトはページ レベルの UI 定義 XAML ですぐに見つかるオブジェクトではありません。 コントロールのテンプレート パーツである場合もよくあります。 たとえば、ユーザーが Button の端にポインターを置くと、ほとんどのポインター イベントでは、 OriginalSource
はボタン自体ではなく、テンプレート内の Border テンプレート パーツになります。 したがって、XAML ページ レベルの UI 定義で明示的に OriginalSource
宣言したオブジェクトの表現に常に依存できるとは限りません。
ヒント
入力イベント バブルは、テンプレート化されたコントロールを作成する場合に特に便利です。 テンプレート化されたすべてのコントロールでは、ユーザーによって新しいテンプレートが適用される可能性があるためです。 作業テンプレートを再作成しようとしているユーザーによって、既定のテンプレートで宣言されているイベント処理が誤って削除される可能性もあるためです。 そのような場合でも、クラス定義内でオーバーライドした OnApplyTemplate の一部としてハンドラーをアタッチすることで、コントロール レベルのイベント処理を提供できます。 これにより、インスタンス化時にコントロールのルートまでバブル ルーティングされる入力イベントをキャッチできます。