EventManager.RegisterClassHandler Methode

Definition

Registriert einen Klassenhandler für ein bestimmtes Routingereignis.

Überlädt

Name Beschreibung
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, bei denen Ereignisdaten bereits als behandelt markiert 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 verarbeitenden Ereignisses.

handler
Delegate

Ein Verweis auf die Klassenhandlerimplementierung.

Beispiele

Im folgenden Beispiel wird ein Handler für PreviewMouseRightButtonDownEventden Aufruf RegisterClassHandlerhinzugefügt.

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 Routingereignissicherung implementiert werden. Ein Klassenhandler ist wie ein statischer Handler, der für alle Instanzen der Klasse vorhanden ist. Da der Handler statisch ist, können Sie Instanzeigenschaften nicht direkt mit einem Klassenhandler ändern, sie können jedoch über den sender Parameter und/oder die Ereignisdaten auf Instanzen zugreifen.

Klassenhandler werden vor Instanzhandlern aufgerufen. Sie können einen Klassenhandler implementieren, der das Verhalten zum Markieren des Ereignisses als behandelt hat. Daher werden Instanzhandler für ein ereignis mit Klassenhandhabung nicht aufgerufen, es sei denn, die Instanzhandler registrieren sich speziell für behandelte Ereignisse.

Viele der WPF Basiselementereignisse bieten klassenhandhabende virtuelle Methoden. Durch Das Überschreiben dieser Methoden in Klassen, die die Basisklassen erben, können Sie die Klassenbehandlung implementieren, ohne in statischen Konstruktoren aufzurufen RegisterClassHandler . Diese Methoden für die Klassenbehandlung sind in der Regel für Eingabeereignisse vorhanden und weisen Namen auf, 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 werden Klassenhandler registriert, um nur als Reaktion auf nicht behandelte Ereignisse aufzurufen. Sie können klassenhandler auch registrieren, um sie aufzurufen, auch wenn die Ereignisargumente mithilfe der RegisterClassHandler(Type, RoutedEvent, Delegate, Boolean) Signatur mit handledEventsToo festgelegter Eigenschaft truebehandelt werden.

Gilt für:

RegisterClassHandler(Type, RoutedEvent, Delegate, Boolean)

Registriert einen Klassenhandler für ein bestimmtes Routingereignis, mit der Option zum Behandeln von Ereignissen, bei denen Ereignisdaten bereits als behandelt markiert 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 verarbeitenden Ereignisses.

handler
Delegate

Ein Verweis auf die Klassenhandlerimplementierung.

handledEventsToo
Boolean

true um diesen Klassenhandler aufzurufen, auch wenn Argumente des Routingereignisses als behandelt markiert wurden; false um das Standardverhalten beizubehalten, dass der Handler für ein markiertes Ereignis nicht aufruft.

Hinweise

Die Klassenbehandlung ist ein Feature, das für Routingereignisse verfügbar ist, einschließlich angefügter Ereignisse, die mit Routingereignissicherung implementiert werden. Ein Klassenhandler ist wie ein statischer Handler, der für alle Instanzen der Klasse vorhanden ist. Da der Handler statisch ist, können Sie Instanzeigenschaften nicht direkt mit einem Klassenhandler ändern, sie können jedoch über den sender Parameter und/oder die Ereignisdaten auf Instanzen zugreifen.

Klassenhandler werden vor Instanzhandlern aufgerufen. Sie können einen Klassenhandler implementieren, der das Verhalten zum Markieren des Ereignisses als behandelt hat. Daher werden Instanzhandler für ein ereignis mit Klassenhandhabung nicht aufgerufen, es sei denn, die Instanzhandler registrieren sich speziell für behandelte Ereignisse.

Viele der WPF Basiselementereignisse bieten klassenhandhabende virtuelle Methoden. Durch Das Überschreiben dieser Methoden in Klassen, die die Basisklassen erben, können Sie die Klassenbehandlung implementieren, ohne in statischen Konstruktoren aufzurufen RegisterClassHandler . Diese Methoden für die Klassenbehandlung sind in der Regel für Eingabeereignisse vorhanden und weisen Namen auf, 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 auf behandelte Ereignisse aufzurufen, indem sie auf <a0/> festgelegt ist. 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: