EventManager.RegisterClassHandler EventManager.RegisterClassHandler EventManager.RegisterClassHandler Method

Definición

Registra un controlador de clase de un evento enrutado concreto.Registers a class handler for a particular routed event.

Sobrecargas

RegisterClassHandler(Type, RoutedEvent, Delegate) RegisterClassHandler(Type, RoutedEvent, Delegate) RegisterClassHandler(Type, RoutedEvent, Delegate)

Registra un controlador de clase de un evento enrutado concreto.Registers a class handler for a particular routed event.

RegisterClassHandler(Type, RoutedEvent, Delegate, Boolean) RegisterClassHandler(Type, RoutedEvent, Delegate, Boolean) RegisterClassHandler(Type, RoutedEvent, Delegate, Boolean)

Registra un controlador de clase de un evento enrutado concreto, con la opción de controlar los eventos en los que los datos del evento ya estén marcados como controlados.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) RegisterClassHandler(Type, RoutedEvent, Delegate) RegisterClassHandler(Type, RoutedEvent, Delegate)

Registra un controlador de clase de un evento enrutado concreto.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

Parámetros

classType
Type Type Type

Tipo de la clase que declara el control de clase.The type of the class that is declaring class handling.

routedEvent
RoutedEvent RoutedEvent RoutedEvent

Identificador de eventos enrutados del evento que se va a controlar.The routed event identifier of the event to handle.

handler
Delegate Delegate Delegate

Referencia a la implementación del controlador de clase.A reference to the class handler implementation.

Ejemplos

En el ejemplo siguiente se agrega un PreviewMouseLeftButtonDowncontrolador para RegisterClassHandler, que llama a.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

Comentarios

El control de clases es una característica que está disponible para los eventos enrutados, incluidos los eventos adjuntos que se implementan con el respaldo de eventos enrutados.Class handling is a feature that is available for routed events, including attached events that are implemented with routed event backing. Un controlador de clase es como un controlador estático que existe para todas las instancias de la clase.A class handler is like a static handler that exists for all instances of the class. Dado que el controlador es estático, no se pueden cambiar las propiedades de instancia directamente con un controlador de clase, pero se sender puede tener acceso a las instancias mediante el parámetro y/o los datos de evento.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.

Los controladores de clase se invocan antes que los controladores de instancia.Class handlers are invoked before instance handlers. Puede implementar un controlador de clase que tenga el comportamiento de marcar el evento como controlado.You can implement a class handler that has the behavior of marking the event as handled. Por lo tanto, no se invocan los controladores de instancia de un evento controlado por clase a menos que los controladores de instancia se registren específicamente para eventos administrados.Therefore, instance handlers for a class-handled event are not invoked unless the instance handlers register specifically for handled events.

Muchos de los WPFWPF eventos de elementos base proporcionan métodos virtuales de control de clases.Many of the WPFWPF base element events provide class handling virtual methods. Al invalidar estos métodos en las clases que heredan las clases base, puede implementar el control de RegisterClassHandler clases sin llamar a en constructores estáticos.By overriding these methods in classes that inherit the base classes, you can implement class handling without calling RegisterClassHandler in static constructors. Estos métodos de control de clases existen normalmente para los eventos de entrada y tienen nombres que empiezan por "ON" y terminan con el nombre del evento que se controla mediante la clase.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.

Para obtener más información sobre el control de clases, vea marcar eventos enrutados como controlados y control de clases.For more information about class handling, see Marking Routed Events as Handled, and Class Handling.

Con esta firma, los controladores de clase se registrarán para que solo se invoquen en respuesta a eventos no controlados.Using this signature, class handlers will be registered to invoke only in response to unhandled events. También puede registrar los controladores de clase que se van a invocar incluso si los argumentos de evento se marcan como controlados handledEventsToo mediante la true RegisterClassHandler(Type, RoutedEvent, Delegate, Boolean) firma, con establecido en.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) RegisterClassHandler(Type, RoutedEvent, Delegate, Boolean) RegisterClassHandler(Type, RoutedEvent, Delegate, Boolean)

Registra un controlador de clase de un evento enrutado concreto, con la opción de controlar los eventos en los que los datos del evento ya estén marcados como controlados.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

Parámetros

classType
Type Type Type

Tipo de la clase que declara el control de clase.The type of the class that is declaring class handling.

routedEvent
RoutedEvent RoutedEvent RoutedEvent

Identificador de eventos enrutados del evento que se va a controlar.The routed event identifier of the event to handle.

handler
Delegate Delegate Delegate

Referencia a la implementación del controlador de clase.A reference to the class handler implementation.

handledEventsToo
Boolean Boolean Boolean

Es true para invocar este controlador de clase aunque los argumentos del evento enrutado se hayan marcado como controlados; es false para retener el comportamiento predeterminado de no invocar el controlador en ningún evento marcado como controlado.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.

Comentarios

El control de clases es una característica que está disponible para los eventos enrutados, incluidos los eventos adjuntos que se implementan con el respaldo de eventos enrutados.Class handling is a feature that is available for routed events, including attached events that are implemented with routed event backing. Un controlador de clase es como un controlador estático que existe para todas las instancias de la clase.A class handler is like a static handler that exists for all instances of the class. Dado que el controlador es estático, no se pueden cambiar las propiedades de instancia directamente con un controlador de clase, pero se sender puede tener acceso a las instancias mediante el parámetro y/o los datos de evento.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.

Los controladores de clase se invocan antes que los controladores de instancia.Class handlers are invoked before instance handlers. Puede implementar un controlador de clase que tenga el comportamiento de marcar el evento como controlado.You can implement a class handler that has the behavior of marking the event as handled. Por lo tanto, no se invocan los controladores de instancia de un evento controlado por clase a menos que los controladores de instancia se registren específicamente para eventos administrados.Therefore, instance handlers for a class-handled event are not invoked unless the instance handlers register specifically for handled events.

Muchos de los WPFWPF eventos de elementos base proporcionan métodos virtuales de control de clases.Many of the WPFWPF base element events provide class handling virtual methods. Al invalidar estos métodos en las clases que heredan las clases base, puede implementar el control de RegisterClassHandler clases sin llamar a en constructores estáticos.By overriding these methods in classes that inherit the base classes, you can implement class handling without calling RegisterClassHandler in static constructors. Estos métodos de control de clases existen normalmente para los eventos de entrada y tienen nombres que empiezan por "ON" y terminan con el nombre del evento que se controla mediante la clase.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.

Para obtener más información sobre el control de clases, vea marcar eventos enrutados como controlados y control de clases.For more information about class handling, see Marking Routed Events as Handled, and Class Handling.

Con esta firma, los controladores de clase se pueden registrar para que se invoquen en handledEventsToo los eventos truecontrolados, estableciendo establecido en.Using this signature, class handlers can be registered to invoke upon handled events, by setting handledEventsToo set to true. Por lo general, solo debe hacer esto si hay un problema de control conocido que está intentando solucionar, como el control del sistema de entrada desde eventos del mouse o del teclado.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.

Se aplica a