イベントのイベントルートは次のようになります。イベントがこれらのシナリオに適していなかった理由について簡単に説明します。モデルが採用されています。Button内にイメージを配置すると、ボタンのビジュアルツリーを効果的に拡張できます。応答するようにするヒットテスト動作を中断しないようにする必要があります。フォームでは、複数の要素から発生する可能性のあるイベントを処理するために、同じハンドラーを複数回アタッチする必要があります。イベントを使用すると、前の例に示したとおり、ハンドラーを一度だけアタッチし、必要に応じてハンドラーのロジックを使用してイベントの発生元を特定することができます。次のようなハンドラーを使用します。イベントでは、クラスに定義した静的ハンドラーを使用できます。ハンドラーよりも先にイベントを処理できます。特定のコードやマークアップのテクニックでは、特定のイベントを識別する機能が必要とされます。フィールドが識別子として作成されます。このフィールドは、静的または実行時のリフレクションを必要としない、堅牢なイベント識別手法を提供します。フィールドメンバーとして保持されます。実装をオーバーライドすることによって実現されます。暗黙の既定のままにされ、そのイベントのハンドラーの追加や削除に言語固有の適切なイベント構文が使用されます。プロパティであるという概念に似ています。ルーティングイベントの宣言を示しています。リスナーである要素の属性としてイベント名を宣言します。ファイルの部分クラス内に存在する必要があります。構文は、ルーティングイベントハンドラーを追加する場合と同じです。イベントラッパーにハンドラーを追加するためです。(WPF)」を参照してください。つのルーティング方法のいずれかを使用します。ハンドラーが呼び出されます。ルートに到達するまで、連続する親要素にルーティングします。ルーティング方法を使用します。要素からの入力や状態変化を報告するために使用されます。ソース要素自体のみに、応答としてハンドラーを呼び出す機会が与えられます。(クラスの処理については、今後のセクションで説明します)。EventTriggerで使用できます。ハンドラーが最初に呼び出されます。ノード要素まで、連続する子要素間の経路をたどります。イベントは、コントロールの複合部分として使用または処理されます。複合部分で発生したイベントは、完全なコントロールに固有のイベントによって意図的に抑止されるか置き換えられます。提供される入力イベントはトンネルとバブルのペアとして実装されます。イベントと呼ばれることもあります。イベントとして実装されているかどうかを常に確認する必要はありません。イベントの動作は独特ですが、イベントを発生元の要素で処理する限り、動作はあまり表面には見えません。クラスを定義するなどの、特定のシナリオの場合です。ソースは、階層内で共通イベントを共有する必要はありません。任意のルーティングイベントのイベントリスナーにすることができます。セット全体で利用可能なルーティングイベントの完全なセットを使用できます。概念は、特に入力イベントに当てはまります。イベントは、要素ツリー間の通信にも使用できます。データが経路上の各要素に永続的に保持されるためです。データの一部を変更した場合、この変更は経路上の次の要素で使用できます。イベントではなくルーティングイベントとして実装される可能性があるという2つの理由があります。独自のイベントを実装している場合は、次の原則も考慮します。スタイル設定およびテンプレート機能では、参照されるイベントがルーティングイベントである必要があります。これは、前に説明したイベント識別子シナリオです。イベントは、クラス処理機構をサポートしています。イベントにアクセスする前にこの静的メソッドでイベントを処理することができます。インスタンスでのイベント処理によって誤って抑止されずにイベント駆動のクラス動作を適用できるため、これはコントロールをデザインするときに便利です。instance.前に示した一連の考慮事項については、このトピックのセクションで個別に説明します。ハンドラーの名前を設定します。イベントを処理するコードを含む実装されたハンドラーの名前です。デリゲートと同じシグネチャを持つ必要があります。イベントのイベントハンドラーデリゲートです。番目のパラメーターでは、イベントのデータを指定します。基本的なルーティングイベントハンドラーデリゲートです。データを転送できます。ルーティングイベントを処理する場合があります。デリゲートを実装する必要があります。プロパティを読み取ることができます。イベントを処理する」を参照してください。イベントのハンドラーを追加するのは簡単です。使用して追加できます。ロジックのバッキング実装を備えています。メソッドの使用例を次に示します。逆参照の処理によって、演算子の構文が少し異なります)。ハンドラーを追加する」を参照してください。キーワードを使用してハンドラー宣言の一部としてハンドラーを追加することもできます。イベント処理」を参照してください。RoutedEventArgsを共有します。プロパティを定義します。trueに設定することによって、ルーティングイベントを処理済みとしてマークするために、ルート上の任意のイベントハンドラーを有効にすることです。データが経路上の各リスナーに再び報告されます。値は、ルーティングイベントがルートに沿って移動するときに、そのイベントの報告方法や処理方法に影響します。場合、他の要素でそのルーティングイベントをリッスンするハンドラーは、通常、その特定のイベントインスタンスに対して呼び出されなくなります。アタッチ構文によって追加されたハンドラーの場合も同様です。