EventManager.RegisterClassHandler Methode

Definitie

Registreert een klasse-handler voor een bepaalde gerouteerde gebeurtenis.

Overloads

Name Description
RegisterClassHandler(Type, RoutedEvent, Delegate)

Registreert een klasse-handler voor een bepaalde gerouteerde gebeurtenis.

RegisterClassHandler(Type, RoutedEvent, Delegate, Boolean)

Registreert een klasse-handler voor een bepaalde gerouteerde gebeurtenis, met de optie voor het afhandelen van gebeurtenissen waarbij gebeurtenisgegevens al zijn gemarkeerd als verwerkt.

RegisterClassHandler(Type, RoutedEvent, Delegate)

Registreert een klasse-handler voor een bepaalde gerouteerde gebeurtenis.

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)

Parameters

classType
Type

Het type klasse dat klasseafhandeling declareren.

routedEvent
RoutedEvent

De gerouteerde gebeurtenis-id van de gebeurtenis die moet worden verwerkt.

handler
Delegate

Een verwijzing naar de implementatie van de klassehandler.

Voorbeelden

In het volgende voorbeeld wordt een handler toegevoegd voor PreviewMouseRightButtonDownEventaanroepen 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

Opmerkingen

Klasseafhandeling is een functie die beschikbaar is voor gerouteerde gebeurtenissen, waaronder gekoppelde gebeurtenissen die zijn geïmplementeerd met gerouteerde gebeurtenisbacking. Een klassehandler lijkt op een statische handler die bestaat voor alle exemplaren van de klasse. Omdat de handler statisch is, kunt u de eigenschappen van exemplaren niet rechtstreeks wijzigen met een klasse-handler, maar u hebt wel toegang tot exemplaren via de sender parameter en/of de gebeurtenisgegevens.

Klasse-handlers worden aangeroepen vóór exemplaarhandlers. U kunt een klasse-handler implementeren die het gedrag heeft van het markeren van de gebeurtenis als verwerkt. Daarom worden exemplaar-handlers voor een class-handled gebeurtenis niet aangeroepen, tenzij de instantie-handlers specifiek registreren voor afgehandelde gebeurtenissen.

Veel van de WPF basiselementgebeurtenissen bieden virtuele methoden voor het verwerken van klassen. Door deze methoden te overschrijven in klassen die de basisklassen overnemen, kunt u klasseafhandeling implementeren zonder dat u statische constructors hoeft aan te roepen RegisterClassHandler . Deze methoden voor het verwerken van klassen bestaan doorgaans voor invoergebeurtenissen en hebben namen die beginnen met 'Aan' en eindigen met de naam van de gebeurtenis die wordt verwerkt door de klasse.

Zie Gerouteerde gebeurtenissen markeren als verwerkt en klasseafhandeling voor meer informatie over het afhandelen van klassen.

Met deze handtekening worden klasse-handlers geregistreerd om alleen aan te roepen als reactie op niet-verwerkte gebeurtenissen. U kunt ook klasse-handlers registreren om aan te roepen, zelfs als de gebeurtenisargumenten zijn gemarkeerd met behulp van de handtekening, met handledEventsToo de RegisterClassHandler(Type, RoutedEvent, Delegate, Boolean) optie ingesteld op true.

Van toepassing op

RegisterClassHandler(Type, RoutedEvent, Delegate, Boolean)

Registreert een klasse-handler voor een bepaalde gerouteerde gebeurtenis, met de optie voor het afhandelen van gebeurtenissen waarbij gebeurtenisgegevens al zijn gemarkeerd als verwerkt.

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)

Parameters

classType
Type

Het type klasse dat klasseafhandeling declareren.

routedEvent
RoutedEvent

De gerouteerde gebeurtenis-id van de gebeurtenis die moet worden verwerkt.

handler
Delegate

Een verwijzing naar de implementatie van de klassehandler.

handledEventsToo
Boolean

true om deze klasse-handler aan te roepen, zelfs als argumenten van de gerouteerde gebeurtenis zijn gemarkeerd als verwerkt; false om het standaardgedrag te behouden van het niet aanroepen van de handler op een gemarkeerde gebeurtenis.

Opmerkingen

Klasseafhandeling is een functie die beschikbaar is voor gerouteerde gebeurtenissen, waaronder gekoppelde gebeurtenissen die zijn geïmplementeerd met gerouteerde gebeurtenisbacking. Een klassehandler lijkt op een statische handler die bestaat voor alle exemplaren van de klasse. Omdat de handler statisch is, kunt u de eigenschappen van exemplaren niet rechtstreeks wijzigen met een klasse-handler, maar u hebt wel toegang tot exemplaren via de sender parameter en/of de gebeurtenisgegevens.

Klasse-handlers worden aangeroepen vóór exemplaarhandlers. U kunt een klasse-handler implementeren die het gedrag heeft van het markeren van de gebeurtenis als verwerkt. Daarom worden exemplaar-handlers voor een class-handled gebeurtenis niet aangeroepen, tenzij de instantie-handlers specifiek registreren voor afgehandelde gebeurtenissen.

Veel van de WPF basiselementgebeurtenissen bieden virtuele methoden voor het verwerken van klassen. Door deze methoden te overschrijven in klassen die de basisklassen overnemen, kunt u klasseafhandeling implementeren zonder dat u statische constructors hoeft aan te roepen RegisterClassHandler . Deze methoden voor het verwerken van klassen bestaan doorgaans voor invoergebeurtenissen en hebben namen die beginnen met 'Aan' en eindigen met de naam van de gebeurtenis die wordt verwerkt door de klasse.

Zie Gerouteerde gebeurtenissen markeren als verwerkt en klasseafhandeling voor meer informatie over het afhandelen van klassen.

Met deze handtekening kunnen klasse-handlers worden geregistreerd om aan te roepen bij afgehandelde gebeurtenissen door de instelling handledEventsToo ingesteld op true. Over het algemeen moet u dit alleen doen als er een bekend afhandelingsprobleem is dat u wilt omzeilen, zoals het verwerken van invoersystemen van muis- of toetsenbord-gebeurtenissen.

Van toepassing op