EventManager.RegisterClassHandler Metoda

Definicja

Rejestruje procedurę obsługi klasy dla określonego zdarzenia kierowanego.Registers a class handler for a particular routed event.

Przeciążenia

RegisterClassHandler(Type, RoutedEvent, Delegate)

Rejestruje procedurę obsługi klasy dla określonego zdarzenia kierowanego.Registers a class handler for a particular routed event.

RegisterClassHandler(Type, RoutedEvent, Delegate, Boolean)

Rejestruje procedurę obsługi dla konkretnego zdarzenia kierowanego z opcją obsługi zdarzeń, w przypadku których dane zdarzenia są już oznaczone jako obsługiwane.Registers a class handler for a particular routed event, with the option to handle events where event data is already marked handled.

RegisterClassHandler(Type, RoutedEvent, Delegate)

Rejestruje procedurę obsługi klasy dla określonego zdarzenia kierowanego.Registers a class handler for a particular routed event.

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)

Parametry

classType
Type

Typ klasy, która deklaruje obsługę klas.The type of the class that is declaring class handling.

routedEvent
RoutedEvent

Identyfikator rozesłanego zdarzenia do obsłużenia.The routed event identifier of the event to handle.

handler
Delegate

Odwołanie do implementacji procedury obsługi klas.A reference to the class handler implementation.

Przykłady

Poniższy przykład dodaje procedurę obsługi dla PreviewMouseLeftButtonDown, wywołując RegisterClassHandler.The following example adds a handler for PreviewMouseLeftButtonDown, calling 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

Uwagi

Obsługa klas to funkcja, która jest dostępna dla zdarzeń kierowanych, łącznie z dołączonymi zdarzeniami, które są implementowane za pomocą przekierowywania zdarzeń.Class handling is a feature that is available for routed events, including attached events that are implemented with routed event backing. Procedura obsługi klas jest taka jak statyczna procedura obsługi, która istnieje dla wszystkich wystąpień klasy.A class handler is like a static handler that exists for all instances of the class. Ponieważ procedura obsługi jest statyczna, nie można zmienić właściwości wystąpienia bezpośrednio z obsługą klasy, ale można uzyskać dostęp do wystąpień za pomocą parametru sender i/lub danych zdarzenia.Because the handler is static, you cannot change instance properties directly with a class handler, but you can access instances through the sender parameter and/or the event data.

Procedury obsługi klas są wywoływane przed obsługą wystąpień.Class handlers are invoked before instance handlers. Można zaimplementować procedurę obsługi klasy, która ma zachowanie podczas oznaczania zdarzenia jako obsługiwane.You can implement a class handler that has the behavior of marking the event as handled. W związku z tym programy obsługi wystąpień dla zdarzenia obsługiwanego przez klasę nie są wywoływane, chyba że programy obsługi wystąpień rejestrują się w odniesieniu do obsłużonych zdarzeń.Therefore, instance handlers for a class-handled event are not invoked unless the instance handlers register specifically for handled events.

Wiele z WPFWPF zdarzeń elementu podstawowego zapewnia klasy obsługujące metody wirtualne.Many of the WPFWPF base element events provide class handling virtual methods. Zastępując te metody w klasach, które dziedziczą klasy bazowe, można zaimplementować obsługę klas bez wywoływania RegisterClassHandler w konstruktorach statycznych.By overriding these methods in classes that inherit the base classes, you can implement class handling without calling RegisterClassHandler in static constructors. Te metody obsługi klas zazwyczaj istnieją dla zdarzeń wejściowych i mają nazwy rozpoczynające się od "on" i kończą się nazwą zdarzenia, które są obsługiwane przez klasę.These class handling methods typically exist for input events and have names that start with "On" and end with the name of the event being class handled.

Aby uzyskać więcej informacji na temat obsługi klas, zobacz oznaczanie zdarzeń kierowanych jako obsłużone i obsługa klas.For more information about class handling, see Marking Routed Events as Handled, and Class Handling.

Za pomocą tej sygnatury, programy obsługi klas zostaną zarejestrowane do wywołania tylko w odpowiedzi na nieobsłużone zdarzenia.Using this signature, class handlers will be registered to invoke only in response to unhandled events. Można również zarejestrować procedury obsługi klasy do wywołania nawet wtedy, gdy argumenty zdarzeń są oznaczone jako obsługiwane, przy użyciu sygnatury RegisterClassHandler(Type, RoutedEvent, Delegate, Boolean) z handledEventsToo ustawionym na true.You can also register class handlers to invoke even if the event arguments are marked handled, by using the RegisterClassHandler(Type, RoutedEvent, Delegate, Boolean) signature, with handledEventsToo set to true.

RegisterClassHandler(Type, RoutedEvent, Delegate, Boolean)

Rejestruje procedurę obsługi dla konkretnego zdarzenia kierowanego z opcją obsługi zdarzeń, w przypadku których dane zdarzenia są już oznaczone jako obsługiwane.Registers a class handler for a particular routed event, with the option to handle events where event data is already marked handled.

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)

Parametry

classType
Type

Typ klasy, która deklaruje obsługę klas.The type of the class that is declaring class handling.

routedEvent
RoutedEvent

Identyfikator rozesłanego zdarzenia do obsłużenia.The routed event identifier of the event to handle.

handler
Delegate

Odwołanie do implementacji procedury obsługi klas.A reference to the class handler implementation.

handledEventsToo
Boolean

true, aby wywołać tę procedurę obsługi klasy, nawet jeśli argumenty zdarzenia kierowanego zostały oznaczone jako obsługiwane; false zachować domyślnego zachowania niewywoływania programu obsługi dla dowolnego oznaczonego zdarzenia obsługiwanego.true to invoke this class handler even if arguments of the routed event have been marked as handled; false to retain the default behavior of not invoking the handler on any marked-handled event.

Uwagi

Obsługa klas to funkcja, która jest dostępna dla zdarzeń kierowanych, łącznie z dołączonymi zdarzeniami, które są implementowane za pomocą przekierowywania zdarzeń.Class handling is a feature that is available for routed events, including attached events that are implemented with routed event backing. Procedura obsługi klas jest taka jak statyczna procedura obsługi, która istnieje dla wszystkich wystąpień klasy.A class handler is like a static handler that exists for all instances of the class. Ponieważ procedura obsługi jest statyczna, nie można zmienić właściwości wystąpienia bezpośrednio z obsługą klasy, ale można uzyskać dostęp do wystąpień za pomocą parametru sender i/lub danych zdarzenia.Because the handler is static, you cannot change instance properties directly with a class handler, but you can access instances through the sender parameter and/or the event data.

Procedury obsługi klas są wywoływane przed obsługą wystąpień.Class handlers are invoked before instance handlers. Można zaimplementować procedurę obsługi klasy, która ma zachowanie podczas oznaczania zdarzenia jako obsługiwane.You can implement a class handler that has the behavior of marking the event as handled. W związku z tym programy obsługi wystąpień dla zdarzenia obsługiwanego przez klasę nie są wywoływane, chyba że programy obsługi wystąpień rejestrują się w odniesieniu do obsłużonych zdarzeń.Therefore, instance handlers for a class-handled event are not invoked unless the instance handlers register specifically for handled events.

Wiele z WPFWPF zdarzeń elementu podstawowego zapewnia klasy obsługujące metody wirtualne.Many of the WPFWPF base element events provide class handling virtual methods. Zastępując te metody w klasach, które dziedziczą klasy bazowe, można zaimplementować obsługę klas bez wywoływania RegisterClassHandler w konstruktorach statycznych.By overriding these methods in classes that inherit the base classes, you can implement class handling without calling RegisterClassHandler in static constructors. Te metody obsługi klas zazwyczaj istnieją dla zdarzeń wejściowych i mają nazwy rozpoczynające się od "on" i kończą się nazwą zdarzenia, które są obsługiwane przez klasę.These class handling methods typically exist for input events and have names that start with "On" and end with the name of the event being class handled.

Aby uzyskać więcej informacji na temat obsługi klas, zobacz oznaczanie zdarzeń kierowanych jako obsłużone i obsługa klas.For more information about class handling, see Marking Routed Events as Handled, and Class Handling.

Za pomocą tej sygnatury, programy obsługi klasy mogą być rejestrowane w celu wywołania po obsłużonych zdarzeniach przez ustawienie handledEventsToo ustawione na true.Using this signature, class handlers can be registered to invoke upon handled events, by setting handledEventsToo set to true. Ogólnie rzecz biorąc, należy to zrobić tylko wtedy, gdy występuje znany problem z obsługą, który próbujesz obejść, taki jak wejściowy system obsługi zdarzeń myszy lub klawiatury.Generally, you should do this only if there is a known handling issue you are trying to work around, such as input system handling from mouse or keyboard events.

Dotyczy