言語

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 の端にポインターを置くと、ほとんどのポインター イベントでは、OriginalSourceButton 自体ではなくテンプレート内の Borderテンプレート パーツになります。 したがって、XAML ページ レベルの UI 定義で明示的に宣言したオブジェクトを表す OriginalSource に常に依存することはできません。

Tip

入力イベント バブルは、テンプレート化されたコントロールを作成する場合に特に便利です。 テンプレートを持つコントロールには、コンシューマーによって新しいテンプレートを適用できます。 動作するテンプレートを再作成しようとしているコンシューマーは、既定のテンプレートで宣言されているイベント処理を意図せずに排除する可能性があります。 クラス定義の OnApplyTemplate オーバーライドの一部としてハンドラーをアタッチすることで、コントロール レベルのイベント処理を引き続き提供できます。 その後、インスタンス化時にコントロールのルートまでバブルアップする入力イベントをキャッチできます。

適用対象

こちらもご覧ください