RoutedEventArgs.OriginalSource プロパティ

定義

イベントを発生させたオブジェクトへの参照を取得します。 これは多くの場合、アプリ 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

プロパティ値

Object

Platform::Object

IInspectable

イベントを発生させたオブジェクト。

注釈

ルーティング イベントがイベント ルートをバブルアップすると、 sender はイベント発生オブジェクトと同じオブジェクトではなくなります。 代わりに、 sender は、呼び出されるハンドラーがアタッチされている オブジェクトです。

は興味深くない場合 sender があり、代わりに、ポインター イベントが発生したときにポインターがオーバーする可能性のある子オブジェクト、またはユーザーがキーボード キーを押したときにフォーカスを保持した大きな UI 内のオブジェクトなどの情報に関心があります。 このような場合は、 プロパティの値を OriginalSource 使用できます。 ルート上のすべてのポイントで、 OriginalSource ハンドラーがアタッチされているオブジェクトではなく、イベントを発生させた元のオブジェクトを報告します。 ただし、UIElement の入力イベントでは、そのイベント発生元のオブジェクトはページ レベルの UI 定義 XAML ですぐに見つかるオブジェクトではありません。 コントロールのテンプレート パーツである場合もよくあります。 たとえば、ユーザーが Button の端にポインターを置くと、ほとんどのポインター イベントでは、 OriginalSourceボタン自体ではなく、テンプレート内の Border テンプレート パーツになります。 したがって、XAML ページ レベルの UI 定義で明示的に OriginalSource 宣言したオブジェクトの表現に常に依存できるとは限りません。

ヒント

入力イベント バブルは、テンプレート化されたコントロールを作成する場合に特に便利です。 テンプレート化されたすべてのコントロールでは、ユーザーによって新しいテンプレートが適用される可能性があるためです。 作業テンプレートを再作成しようとしているユーザーによって、既定のテンプレートで宣言されているイベント処理が誤って削除される可能性もあるためです。 そのような場合でも、クラス定義内でオーバーライドした OnApplyTemplate の一部としてハンドラーをアタッチすることで、コントロール レベルのイベント処理を提供できます。 これにより、インスタンス化時にコントロールのルートまでバブル ルーティングされる入力イベントをキャッチできます。

適用対象

こちらもご覧ください