EventManager.RegisterClassHandler Methode
Definition
Wichtig
Einige Informationen beziehen sich auf Vorabversionen, die vor dem Release ggf. grundlegend überarbeitet werden. Microsoft übernimmt hinsichtlich der hier bereitgestellten Informationen keine Gewährleistungen, seien sie ausdrücklich oder konkludent.
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 true
festgelegt 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 handledEventsToo
true
festgelegt 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.