EventManager.RegisterClassHandler メソッド

定義

特定のルーティング イベントのクラス ハンドラーを登録します。

オーバーロード

RegisterClassHandler(Type, RoutedEvent, Delegate)

特定のルーティング イベントのクラス ハンドラーを登録します。

RegisterClassHandler(Type, RoutedEvent, Delegate, Boolean)

イベント データが既に処理済みとしてマークされているイベントを処理するオプションを使用して、特定のルーティング イベントのクラス ハンドラーを登録します。

RegisterClassHandler(Type, RoutedEvent, Delegate)

特定のルーティング イベントのクラス ハンドラーを登録します。

public:
 static void RegisterClassHandler(Type ^ classType, System::Windows::RoutedEvent ^ routedEvent, Delegate ^ handler);
public static void RegisterClassHandler (Type classType, System.Windows.RoutedEvent routedEvent, Delegate handler);
static member RegisterClassHandler : Type * System.Windows.RoutedEvent * Delegate -> unit
Public Shared Sub RegisterClassHandler (classType As Type, routedEvent As RoutedEvent, handler As Delegate)

パラメーター

classType
Type

クラスの処理を宣言するクラスの型。

routedEvent
RoutedEvent

処理するイベントのルーティング イベント識別子。

handler
Delegate

クラス ハンドラー実装への参照。

次の例では、 を呼び出す RegisterClassHandlerのハンドラーをPreviewMouseRightButtonDownEvent追加します。

static MyEditContainer()
{
  EventManager.RegisterClassHandler(typeof(MyEditContainer), PreviewMouseRightButtonDownEvent, new RoutedEventHandler(LocalOnMouseRightButtonDown));
}
internal static void LocalOnMouseRightButtonDown(object sender, RoutedEventArgs e)
{
  MessageBox.Show("this is invoked before the On* class handler on UIElement");
  //e.Handled = true; //uncommenting this would cause ONLY the subclass' class handler to respond
}
Shared Sub New()
  EventManager.RegisterClassHandler(GetType(MyEditContainer), PreviewMouseRightButtonDownEvent, New RoutedEventHandler(AddressOf LocalOnMouseRightButtonDown))
End Sub
Friend Shared Sub LocalOnMouseRightButtonDown(ByVal sender As Object, ByVal e As RoutedEventArgs)
  MessageBox.Show("this is invoked before the On* class handler on UIElement")
  'e.Handled = True //uncommenting this would cause ONLY the subclass' class handler to respond
End Sub

注釈

クラス処理は、ルーティング イベントのバッキングを使用して実装される添付イベントを含む、ルーティング イベントで使用できる機能です。 クラス ハンドラーは、 クラスのすべてのインスタンスに存在する静的ハンドラーに似ています。 ハンドラーは静的であるため、クラス ハンドラーを使用してインスタンスのプロパティを直接変更することはできませんが、 パラメーターやイベント データを sender 使用してインスタンスにアクセスできます。

クラス ハンドラーは、インスタンス ハンドラーの前に呼び出されます。 イベントを処理済みとしてマークする動作を持つクラス ハンドラーを実装できます。 そのため、クラス処理イベントのインスタンス ハンドラーは、インスタンス ハンドラーが処理されたイベント専用に登録しない限り呼び出されません。

WPF 基本要素イベントの多くは、仮想メソッドを処理するクラスを提供します。 基底クラスを継承するクラスでこれらのメソッドをオーバーライドすることで、静的コンストラクターで を呼び出 RegisterClassHandler さずにクラス処理を実装できます。 これらのクラス処理メソッドは、通常、入力イベントに存在し、名前は "On" で始まり、処理されるクラスのイベントの名前で終わる名前を持ちます。

クラス処理の詳細については、「 ルーティング イベントを処理済みとしてマークする」および「クラス処理」を参照してください。

このシグネチャを使用すると、未処理のイベントに応答してのみ呼び出すようにクラス ハンドラーが登録されます。 イベント引数が 処理済みとしてマークされている場合でも、 シグネチャを 使用して RegisterClassHandler(Type, RoutedEvent, Delegate, Boolean) を に設定して呼び出すクラス ハンドラーをtruehandledEventsToo登録することもできます。

適用対象

RegisterClassHandler(Type, RoutedEvent, Delegate, Boolean)

イベント データが既に処理済みとしてマークされているイベントを処理するオプションを使用して、特定のルーティング イベントのクラス ハンドラーを登録します。

public:
 static void RegisterClassHandler(Type ^ classType, System::Windows::RoutedEvent ^ routedEvent, Delegate ^ handler, bool handledEventsToo);
public static void RegisterClassHandler (Type classType, System.Windows.RoutedEvent routedEvent, Delegate handler, bool handledEventsToo);
static member RegisterClassHandler : Type * System.Windows.RoutedEvent * Delegate * bool -> unit
Public Shared Sub RegisterClassHandler (classType As Type, routedEvent As RoutedEvent, handler As Delegate, handledEventsToo As Boolean)

パラメーター

classType
Type

クラスの処理を宣言するクラスの型。

routedEvent
RoutedEvent

処理するイベントのルーティング イベント識別子。

handler
Delegate

クラス ハンドラー実装への参照。

handledEventsToo
Boolean

ルーティング イベントの引数が既に処理済みとしてマークされていても、このクラス ハンドラーを呼び出す場合は true。処理済みとしてマークされているイベントのハンドラーを呼び出さない、既定の動作を維持する場合は false

注釈

クラス処理は、ルーティング イベントのバッキングを使用して実装される添付イベントを含む、ルーティング イベントで使用できる機能です。 クラス ハンドラーは、 クラスのすべてのインスタンスに存在する静的ハンドラーに似ています。 ハンドラーは静的であるため、クラス ハンドラーを使用してインスタンスのプロパティを直接変更することはできませんが、 パラメーターやイベント データを sender 使用してインスタンスにアクセスできます。

クラス ハンドラーは、インスタンス ハンドラーの前に呼び出されます。 イベントを処理済みとしてマークする動作を持つクラス ハンドラーを実装できます。 そのため、クラス処理イベントのインスタンス ハンドラーは、インスタンス ハンドラーが処理されたイベント専用に登録しない限り呼び出されません。

WPF 基本要素イベントの多くは、仮想メソッドを処理するクラスを提供します。 基底クラスを継承するクラスでこれらのメソッドをオーバーライドすることで、静的コンストラクターで を呼び出 RegisterClassHandler さずにクラス処理を実装できます。 これらのクラス処理メソッドは、通常、入力イベントに存在し、名前は "On" で始まり、処理されるクラスのイベントの名前で終わる名前を持ちます。

クラス処理の詳細については、「 ルーティング イベントを処理済みとしてマークする」および「クラス処理」を参照してください。

このシグネチャを使用して、 を に設定 handledEventsToo することで、処理されたイベント時に呼び出すクラス ハンドラーを true登録できます。 通常、これは、マウスまたはキーボード イベントからの入力システムの処理など、回避しようとしている既知の処理の問題がある場合にのみ行う必要があります。

適用対象