EventManager.RegisterClassHandler Método
Definición
Importante
Parte de la información hace referencia a la versión preliminar del producto, que puede haberse modificado sustancialmente antes de lanzar la versión definitiva. Microsoft no otorga ninguna garantía, explícita o implícita, con respecto a la información proporcionada aquí.
Registra un controlador de clases para un evento enrutado determinado.
Sobrecargas
| Nombre | Description |
|---|---|
| RegisterClassHandler(Type, RoutedEvent, Delegate) |
Registra un controlador de clases para un evento enrutado determinado. |
| RegisterClassHandler(Type, RoutedEvent, Delegate, Boolean) |
Registra un controlador de clases para un evento enrutado determinado, con la opción de controlar eventos en los que los datos del evento ya están marcados como controlados. |
RegisterClassHandler(Type, RoutedEvent, Delegate)
Registra un controlador de clases para un evento enrutado determinado.
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)
Parámetros
- classType
- Type
Tipo de la clase que declara el control de clases.
- routedEvent
- RoutedEvent
Identificador de evento enrutado del evento que se va a controlar.
- handler
- Delegate
Referencia a la implementación del controlador de clases.
Ejemplos
En el ejemplo siguiente se agrega un controlador para PreviewMouseRightButtonDownEvent, llamando a 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 eventos enrutados, incluidos los eventos adjuntos que se implementan con respaldo de eventos enrutados. Un controlador de clases es como un controlador estático que existe para todas las instancias de la clase . Dado que el controlador es estático, no puede cambiar las propiedades de instancia directamente con un controlador de clases, pero puede acceder a las instancias a través del sender parámetro o los datos del evento.
Los controladores de clase se invocan antes de los controladores de instancia. Puede implementar un controlador de clases que tenga el comportamiento de marcar el evento como controlado. Por lo tanto, los controladores de instancia de un evento controlado por clases no se invocan a menos que los controladores de instancia se registren específicamente para eventos controlados.
Muchos de los eventos de elemento base WPF proporcionan métodos virtuales de control de clases. Al invalidar estos métodos en clases que heredan las clases base, puede implementar el control de clases sin llamar a RegisterClassHandler en constructores estáticos. Normalmente, estos métodos de control de clases existen para eventos de entrada y tienen nombres que comienzan por "Activado" y terminan con el nombre del evento que se controla.
Para obtener más información sobre el control de clases, vea Marcar eventos enrutados como controlados y Control de clases.
Con esta firma, los controladores de clase se registrarán para invocar solo en respuesta a eventos no controlados. También puede registrar controladores de clase para invocar incluso si los argumentos de evento están marcados como administrados mediante la RegisterClassHandler(Type, RoutedEvent, Delegate, Boolean) firma , con handledEventsToo establecido en true.
Se aplica a
RegisterClassHandler(Type, RoutedEvent, Delegate, Boolean)
Registra un controlador de clases para un evento enrutado determinado, con la opción de controlar eventos en los que los datos del evento ya están marcados como controlados.
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)
Parámetros
- classType
- Type
Tipo de la clase que declara el control de clases.
- routedEvent
- RoutedEvent
Identificador de evento enrutado del evento que se va a controlar.
- handler
- Delegate
Referencia a la implementación del controlador de clases.
- handledEventsToo
- Boolean
true para invocar este controlador de clases incluso si los argumentos del evento enrutado se han marcado como controlado; false para conservar el comportamiento predeterminado de no invocar el controlador en ningún evento marcado controlado.
Comentarios
El control de clases es una característica que está disponible para eventos enrutados, incluidos los eventos adjuntos que se implementan con respaldo de eventos enrutados. Un controlador de clases es como un controlador estático que existe para todas las instancias de la clase . Dado que el controlador es estático, no puede cambiar las propiedades de instancia directamente con un controlador de clases, pero puede acceder a las instancias a través del sender parámetro o los datos del evento.
Los controladores de clase se invocan antes de los controladores de instancia. Puede implementar un controlador de clases que tenga el comportamiento de marcar el evento como controlado. Por lo tanto, los controladores de instancia de un evento controlado por clases no se invocan a menos que los controladores de instancia se registren específicamente para eventos controlados.
Muchos de los eventos de elemento base WPF proporcionan métodos virtuales de control de clases. Al invalidar estos métodos en clases que heredan las clases base, puede implementar el control de clases sin llamar a RegisterClassHandler en constructores estáticos. Normalmente, estos métodos de control de clases existen para eventos de entrada y tienen nombres que comienzan por "Activado" y terminan con el nombre del evento que se controla.
Para obtener más información sobre el control de clases, vea Marcar eventos enrutados como controlados y Control de clases.
Con esta firma, los controladores de clase se pueden registrar para invocar en eventos controlados estableciendo handledEventsToo en true. Por lo general, solo debe hacerlo si hay un problema de control conocido que intenta solucionar, como el control del sistema de entrada desde eventos de mouse o teclado.