EventManager.RegisterClassHandler Methode

Definition

Registriert einen Klassenhandler für ein bestimmtes Routingereignis.

Überlädt

RegisterClassHandler(Type, RoutedEvent, Delegate)

Registriert einen Klassenhandler für ein bestimmtes Routingereignis.

RegisterClassHandler(Type, RoutedEvent, Delegate, Boolean)

Registriert einen Klassenhandler für ein bestimmtes Routingereignis mit der Option zum Behandeln von Ereignissen, wenn Ereignisdaten bereits als behandelt gekennzeichnet sind.

RegisterClassHandler(Type, RoutedEvent, Delegate)

Registriert einen Klassenhandler für ein bestimmtes Routingereignis.

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)

Parameter

classType
Type

Der Typ der Klasse, die die Klassenbehandlung deklariert.

routedEvent
RoutedEvent

Der Routingereignisbezeichner des zu behandelnden Ereignisses.

handler
Delegate

Ein Verweis auf die Klassenhandlerimplementierung.

Beispiele

Im folgenden Beispiel wird ein Handler für PreviewMouseRightButtonDownEventhinzugefügt, der aufruft RegisterClassHandler.

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

Hinweise

Die Klassenbehandlung ist ein Feature, das für Routingereignisse verfügbar ist, einschließlich angefügter Ereignisse, die mit der Unterstützung von Routingereignissen implementiert werden. Ein Klassenhandler ähnelt einem statischen Handler, der für alle Instanzen der -Klasse vorhanden ist. Da der Handler statisch ist, können Sie instance Eigenschaften nicht direkt mit einem Klassenhandler ändern, aber Sie können über den sender Parameter und/oder die Ereignisdaten auf Instanzen zugreifen.

Klassenhandler werden vor instance-Handlern aufgerufen. Sie können einen Klassenhandler implementieren, der das Verhalten aufweist, das Ereignis als behandelt zu markieren. Daher werden instance-Handler für ein von der Klasse behandeltes Ereignis nur aufgerufen, wenn die instance-Handler speziell für behandelte Ereignisse registriert werden.

Viele der WPF-Basiselementereignisse stellen virtuelle Methoden für die Klassenbehandlung bereit. Durch Überschreiben dieser Methoden in Klassen, die die Basisklassen erben, können Sie die Klassenbehandlung implementieren, ohne statische Konstruktoren aufzurufen RegisterClassHandler . Diese Methoden zur Klassenbehandlung sind in der Regel für Eingabeereignisse vorhanden und haben Namen, die mit "Ein" beginnen und mit dem Namen des Ereignisses enden, das von der Klasse behandelt wird.

Weitere Informationen zur Klassenbehandlung finden Sie unter Markieren von Routingereignissen als behandelt und Klassenbehandlung.

Mit dieser Signatur werden Klassenhandler registriert, um nur als Reaktion auf nicht behandelte Ereignisse aufzurufen. Sie können auch Klassenhandler registrieren, um sie aufzurufen, auch wenn die Ereignisargumente als behandelt gekennzeichnet sind, indem Sie die RegisterClassHandler(Type, RoutedEvent, Delegate, Boolean) Signatur verwenden, wobei handledEventsToo auf truefestgelegt ist.

Gilt für:

RegisterClassHandler(Type, RoutedEvent, Delegate, Boolean)

Registriert einen Klassenhandler für ein bestimmtes Routingereignis mit der Option zum Behandeln von Ereignissen, wenn Ereignisdaten bereits als behandelt gekennzeichnet sind.

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)

Parameter

classType
Type

Der Typ der Klasse, die die Klassenbehandlung deklariert.

routedEvent
RoutedEvent

Der Routingereignisbezeichner des zu behandelnden Ereignisses.

handler
Delegate

Ein Verweis auf die Klassenhandlerimplementierung.

handledEventsToo
Boolean

true, um diesen Klassenhandler aufzurufen, auch wenn Argumente des Routingereignisses als behandelt gekennzeichnet sind, false, um das Standardverhalten beizubehalten, d. h. der Handler wird bei allen als behandelt markierten Ereignissen nicht aufgerufen.

Hinweise

Die Klassenbehandlung ist ein Feature, das für Routingereignisse verfügbar ist, einschließlich angefügter Ereignisse, die mit der Unterstützung von Routingereignissen implementiert werden. Ein Klassenhandler ähnelt einem statischen Handler, der für alle Instanzen der -Klasse vorhanden ist. Da der Handler statisch ist, können Sie instance Eigenschaften nicht direkt mit einem Klassenhandler ändern, aber Sie können über den sender Parameter und/oder die Ereignisdaten auf Instanzen zugreifen.

Klassenhandler werden vor instance-Handlern aufgerufen. Sie können einen Klassenhandler implementieren, der das Verhalten aufweist, das Ereignis als behandelt zu markieren. Daher werden instance-Handler für ein von der Klasse behandeltes Ereignis nur aufgerufen, wenn die instance-Handler speziell für behandelte Ereignisse registriert werden.

Viele der WPF-Basiselementereignisse stellen virtuelle Methoden für die Klassenbehandlung bereit. Durch Überschreiben dieser Methoden in Klassen, die die Basisklassen erben, können Sie die Klassenbehandlung implementieren, ohne statische Konstruktoren aufzurufen RegisterClassHandler . Diese Methoden zur Klassenbehandlung sind in der Regel für Eingabeereignisse vorhanden und haben Namen, die mit "Ein" beginnen und mit dem Namen des Ereignisses enden, das von der Klasse behandelt wird.

Weitere Informationen zur Klassenbehandlung finden Sie unter Markieren von Routingereignissen als behandelt und Klassenbehandlung.

Mithilfe dieser Signatur können Klassenhandler registriert werden, um bei behandelten Ereignissen aufzurufen, indem auf handledEventsTootruefestgelegt wird. Im Allgemeinen sollten Sie dies nur tun, wenn ein bekanntes Behandlungsproblem vorliegt, das Sie umgehen möchten, z. B. die Eingabesystembehandlung von Maus- oder Tastaturereignissen.

Gilt für: