EventManager.RegisterClassHandler Metoda

Definice

Zaregistruje obslužnou rutinu třídy pro konkrétní směrovanou událost.Registers a class handler for a particular routed event.

Přetížení

RegisterClassHandler(Type, RoutedEvent, Delegate)

Zaregistruje obslužnou rutinu třídy pro konkrétní směrovanou událost.Registers a class handler for a particular routed event.

RegisterClassHandler(Type, RoutedEvent, Delegate, Boolean)

Zaregistruje obslužnou rutinu třídy pro konkrétní směrovanou událost s možností zpracování událostí, kde data události jsou již označena jako zpracovaná.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)

Zaregistruje obslužnou rutinu třídy pro konkrétní směrovanou událost.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 třídy, která deklaruje zpracování třídy.The type of the class that is declaring class handling.

routedEvent
RoutedEvent

Identifikátor směrované události události, která má být zpracovánaThe routed event identifier of the event to handle.

handler
Delegate

Odkaz na implementaci obslužné rutiny třídy.A reference to the class handler implementation.

Příklady

Následující příklad přidá obslužnou rutinu pro PreviewMouseLeftButtonDown , volání 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

Poznámky

Zpracování tříd je funkce, která je k dispozici pro směrované události, včetně připojených událostí implementovaných s přesměrovanými událostmi.Class handling is a feature that is available for routed events, including attached events that are implemented with routed event backing. Obslužná rutina třídy je jako statická obslužná rutina, která existuje pro všechny instance třídy.A class handler is like a static handler that exists for all instances of the class. Vzhledem k tomu, že obslužná rutina je statická, nelze změnit vlastnosti instance přímo pomocí obslužné rutiny třídy, ale můžete získat přístup k instancím pomocí sender parametru nebo dat události.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.

Obslužné rutiny třídy jsou vyvolány před obslužnými rutinami instance.Class handlers are invoked before instance handlers. Můžete implementovat obslužnou rutinu třídy, která má chování při označení události jako zpracovaného.You can implement a class handler that has the behavior of marking the event as handled. Proto obslužné rutiny instance pro událost zpracovávající třídu nejsou vyvolány, pokud obslužné rutiny instance nejsou určeny konkrétně pro zpracování událostí.Therefore, instance handlers for a class-handled event are not invoked unless the instance handlers register specifically for handled events.

Mnohé z událostí základního elementu WPF poskytují třídy pro zpracování virtuálních metod.Many of the WPF base element events provide class handling virtual methods. Přepsáním těchto metod ve třídách, které dědí základní třídy, můžete implementovat zpracování tříd bez volání RegisterClassHandler ve statických konstruktorech.By overriding these methods in classes that inherit the base classes, you can implement class handling without calling RegisterClassHandler in static constructors. Tyto metody zpracování tříd obvykle existují pro vstupní události a mají názvy, které začínají na "on" a končí názvem události, kterou třída zpracovává.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.

Další informace o zpracování tříd naleznete v tématu Označení směrovaných událostí jako zpracovaných a zpracování tříd.For more information about class handling, see Marking Routed Events as Handled, and Class Handling.

Pomocí tohoto podpisu budou obslužné rutiny třídy zaregistrovány pro vyvolání pouze v reakci na neošetřené události.Using this signature, class handlers will be registered to invoke only in response to unhandled events. Můžete také zaregistrovat obslužné rutiny tříd pro vyvolání i v případě, že jsou argumenty události označeny jako zpracované, pomocí RegisterClassHandler(Type, RoutedEvent, Delegate, Boolean) signatury s handledEventsToo nastavením 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.

Platí pro

RegisterClassHandler(Type, RoutedEvent, Delegate, Boolean)

Zaregistruje obslužnou rutinu třídy pro konkrétní směrovanou událost s možností zpracování událostí, kde data události jsou již označena jako zpracovaná.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 třídy, která deklaruje zpracování třídy.The type of the class that is declaring class handling.

routedEvent
RoutedEvent

Identifikátor směrované události události, která má být zpracovánaThe routed event identifier of the event to handle.

handler
Delegate

Odkaz na implementaci obslužné rutiny třídy.A reference to the class handler implementation.

handledEventsToo
Boolean

true pro vyvolání této obslužné rutiny třídy i v případě, že byly argumenty směrované události označeny jako zpracované; false Chcete-li zachovat výchozí chování pro nevyvolání obslužné rutiny u žádné události s příznakem zpracování.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.

Poznámky

Zpracování tříd je funkce, která je k dispozici pro směrované události, včetně připojených událostí implementovaných s přesměrovanými událostmi.Class handling is a feature that is available for routed events, including attached events that are implemented with routed event backing. Obslužná rutina třídy je jako statická obslužná rutina, která existuje pro všechny instance třídy.A class handler is like a static handler that exists for all instances of the class. Vzhledem k tomu, že obslužná rutina je statická, nelze změnit vlastnosti instance přímo pomocí obslužné rutiny třídy, ale můžete získat přístup k instancím pomocí sender parametru nebo dat události.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.

Obslužné rutiny třídy jsou vyvolány před obslužnými rutinami instance.Class handlers are invoked before instance handlers. Můžete implementovat obslužnou rutinu třídy, která má chování při označení události jako zpracovaného.You can implement a class handler that has the behavior of marking the event as handled. Proto obslužné rutiny instance pro událost zpracovávající třídu nejsou vyvolány, pokud obslužné rutiny instance nejsou určeny konkrétně pro zpracování událostí.Therefore, instance handlers for a class-handled event are not invoked unless the instance handlers register specifically for handled events.

Mnohé z událostí základního elementu WPF poskytují třídy pro zpracování virtuálních metod.Many of the WPF base element events provide class handling virtual methods. Přepsáním těchto metod ve třídách, které dědí základní třídy, můžete implementovat zpracování tříd bez volání RegisterClassHandler ve statických konstruktorech.By overriding these methods in classes that inherit the base classes, you can implement class handling without calling RegisterClassHandler in static constructors. Tyto metody zpracování tříd obvykle existují pro vstupní události a mají názvy, které začínají na "on" a končí názvem události, kterou třída zpracovává.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.

Další informace o zpracování tříd naleznete v tématu Označení směrovaných událostí jako zpracovaných a zpracování tříd.For more information about class handling, see Marking Routed Events as Handled, and Class Handling.

Pomocí tohoto podpisu lze obslužné rutiny třídy zaregistrovat pro vyvolání po zpracování událostí nastavením handledEventsToo nastavit na true .Using this signature, class handlers can be registered to invoke upon handled events, by setting handledEventsToo set to true. Obecně platí, že byste to měli udělat jenom v případě, že máte známý problém s zpracováním, který se snažíte vyřešit, například vstupní systém pro zpracování událostí myši nebo klávesnice.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.

Platí pro