UIElement.AddHandler Método

Definición

Agrega un controlador de eventos enrutados para un evento enrutado especificado. Para ello, agrega el controlador a la colección de controladores en el elemento actual.

Sobrecargas

AddHandler(RoutedEvent, Delegate)

Agrega un controlador de eventos enrutados para un evento enrutado especificado. Para ello, agrega el controlador a la colección de controladores en el elemento actual.

AddHandler(RoutedEvent, Delegate, Boolean)

Agrega un controlador de eventos enrutados para un evento enrutado especificado. Para ello, agrega el controlador a la colección de controladores en el elemento actual. Especifique handledEventsToo como true para que el controlador proporcionado se invoque para eventos enrutados que estén marcados como controlados por otro elemento en la ruta del evento.

AddHandler(RoutedEvent, Delegate)

Agrega un controlador de eventos enrutados para un evento enrutado especificado. Para ello, agrega el controlador a la colección de controladores en el elemento actual.

public:
 virtual void AddHandler(System::Windows::RoutedEvent ^ routedEvent, Delegate ^ handler);
public void AddHandler (System.Windows.RoutedEvent routedEvent, Delegate handler);
abstract member AddHandler : System.Windows.RoutedEvent * Delegate -> unit
override this.AddHandler : System.Windows.RoutedEvent * Delegate -> unit
Public Sub AddHandler (routedEvent As RoutedEvent, handler As Delegate)

Parámetros

routedEvent
RoutedEvent

Identificador del evento enrutado que se va a controlar.

handler
Delegate

Referencia a la implementación del controlador.

Implementaciones

Comentarios

Puede agregar el mismo controlador para el mismo evento varias veces sin generar una excepción. Sin embargo, el controlador se invoca varias veces cuando se controla el evento. Por lo tanto, considere cómo este comportamiento podría tener efectos secundarios que se deben tener en cuenta en la implementación del controlador.

Normalmente se usa este método para proporcionar la implementación del descriptor de acceso "add" para el patrón de acceso a eventos de Microsoft .NET de un evento enrutado personalizado.

Se aplica a

AddHandler(RoutedEvent, Delegate, Boolean)

Agrega un controlador de eventos enrutados para un evento enrutado especificado. Para ello, agrega el controlador a la colección de controladores en el elemento actual. Especifique handledEventsToo como true para que el controlador proporcionado se invoque para eventos enrutados que estén marcados como controlados por otro elemento en la ruta del evento.

public:
 void AddHandler(System::Windows::RoutedEvent ^ routedEvent, Delegate ^ handler, bool handledEventsToo);
public void AddHandler (System.Windows.RoutedEvent routedEvent, Delegate handler, bool handledEventsToo);
member this.AddHandler : System.Windows.RoutedEvent * Delegate * bool -> unit
Public Sub AddHandler (routedEvent As RoutedEvent, handler As Delegate, handledEventsToo As Boolean)

Parámetros

routedEvent
RoutedEvent

Identificador del evento enrutado que se va a controlar.

handler
Delegate

Referencia a la implementación del controlador.

handledEventsToo
Boolean

true para registrar el controlador invocado, aunque el evento enrutado esté marcado como controlado en los datos de evento; false para registrar el controlador con la condición predeterminada de que no se invocará si el evento enrutado ya está marcado como controlado.

De manera predeterminada, es false.

No solicite de manera rutinaria volver a controlar un evento enrutado.

Ejemplos

En el ejemplo siguiente se implementa un controlador invocado en el Initialized evento de una página que asocia un controlador definido a uno de los elementos con nombre de la página mediante handledEventsTootrue. Este controlador se invocaría incluso si otro elemento a lo largo de la ruta marcó los datos de eventos compartidos como controlado antes de alcanzar el elemento de control en la ruta.

void PrimeHandledToo(object sender, EventArgs e)
{
    dpanel2.AddHandler(Button.ClickEvent, new RoutedEventHandler(GetHandledToo), true);
}
Private Sub PrimeHandledToo(ByVal sender As Object, ByVal e As EventArgs)
    dpanel2.AddHandler(Button.ClickEvent, New RoutedEventHandler(AddressOf GetHandledToo), True)
End Sub

Comentarios

El procesamiento de eventos de entrada de bajo nivel de forma práctica es una tarea compleja. Muchos controles implementan el comportamiento en el que un determinado evento se marca como controlado y se reemplaza por otro evento más intuitivo. Por lo general, un control solo marcará un evento de entrada de plataforma como controlado si hay alguna intención de diseño para hacerlo. En determinados escenarios, esas intenciones de diseño podrían no ser lo que requiere su control concreto del evento de entrada. Se trata de estos escenarios en los que se registran los controladores con handledEventsToo según true corresponda. Pero no deberías hacer esto de forma rutinaria. Invocar controladores en respuesta a todos los eventos, incluso si se controla, complicará su propia lógica de procesamiento de eventos de aplicación. Es posible que vea una disminución del rendimiento si la lógica del controlador es sustancial. Debe reservar el uso de controladores de asociación para eventos ya controlados para situaciones en las que ya se ha detectado durante el proceso de desarrollo que determinados controles controlan eventos que todavía desea controlar con la lógica de la aplicación.

Otra técnica para evitar el comportamiento de control de clases de determinadas combinaciones de control de eventos es usar la alternativa de vista previa de ese evento. Por ejemplo, si MouseLeftButtonDown está marcado como controlado por el control de clases, es posible que pueda agregar controladores para PreviewMouseLeftButtonDown en su lugar.

Puede agregar el mismo controlador para el mismo evento varias veces sin generar una excepción. Sin embargo, el controlador se invoca varias veces cuando se controla el evento. Por lo tanto, considere cómo este comportamiento podría tener efectos secundarios que se deben tener en cuenta en la implementación del controlador.

Normalmente se usa este método para proporcionar la implementación del descriptor de acceso "add" para el patrón de acceso a eventos de Microsoft .NET de un evento enrutado personalizado.

Se aplica a