UIElement.AddHandler Method

Definition

Adiciona um manipulador de eventos roteados de um evento roteado especificado, adicionando o manipulador à coleção de manipuladores no elemento atual.Adds a routed event handler for a specified routed event, adding the handler to the handler collection on the current element.

Overloads

AddHandler(RoutedEvent, Delegate)

Adiciona um manipulador de eventos roteados de um evento roteado especificado, adicionando o manipulador à coleção de manipuladores no elemento atual.Adds a routed event handler for a specified routed event, adding the handler to the handler collection on the current element.

AddHandler(RoutedEvent, Delegate, Boolean)

Adiciona um manipulador de eventos roteados de um evento roteado especificado, adicionando o manipulador à coleção de manipuladores no elemento atual.Adds a routed event handler for a specified routed event, adding the handler to the handler collection on the current element. Especifique handledEventsToo como true para que o manipulador fornecido seja invocado para eventos roteados que já tenham sido marcados como manipulados por outro elemento na rota de evento.Specify handledEventsToo as true to have the provided handler be invoked for routed event that had already been marked as handled by another element along the event route.

AddHandler(RoutedEvent, Delegate)

Adiciona um manipulador de eventos roteados de um evento roteado especificado, adicionando o manipulador à coleção de manipuladores no elemento atual.Adds a routed event handler for a specified routed event, adding the handler to the handler collection on the current element.

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)

Parameters

routedEvent
RoutedEvent

Um identificador do evento roteado a ser manipulado.An identifier for the routed event to be handled.

handler
Delegate

Uma referência à implementação do manipulador.A reference to the handler implementation.

Implements

Remarks

Você pode adicionar o mesmo manipulador para o mesmo evento várias vezes sem gerar uma exceção.You can add the same handler for the same event multiple times without raising an exception. No entanto, o manipulador é realmente invocado várias vezes quando o evento é manipulado.However, the handler is actually invoked multiple times when the event is handled. Portanto, considere como esse comportamento pode ter efeitos colaterais que devem ser considerados em sua implementação de manipulador.Therefore, consider how this behavior might have side effects that should be accounted for in your handler implementation.

Normalmente, você usa esse método para fornecer a implementação do acessador "Add" para o padrão de acesso de evento Microsoft .NETMicrosoft .NET de um evento roteado personalizado.You typically use this method to provide the implementation of the "add" accessor for the Microsoft .NETMicrosoft .NET event access pattern of a custom routed event.

AddHandler(RoutedEvent, Delegate, Boolean)

Adiciona um manipulador de eventos roteados de um evento roteado especificado, adicionando o manipulador à coleção de manipuladores no elemento atual.Adds a routed event handler for a specified routed event, adding the handler to the handler collection on the current element. Especifique handledEventsToo como true para que o manipulador fornecido seja invocado para eventos roteados que já tenham sido marcados como manipulados por outro elemento na rota de evento.Specify handledEventsToo as true to have the provided handler be invoked for routed event that had already been marked as handled by another element along the event route.

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)

Parameters

routedEvent
RoutedEvent

Um identificador do evento roteado a ser manipulado.An identifier for the routed event to be handled.

handler
Delegate

Uma referência à implementação do manipulador.A reference to the handler implementation.

handledEventsToo
Boolean

true para registrar o manipulador de modo que ele seja invocado mesmo quando o evento roteado estiver marcado como tratado nos dados do evento; false para registrar o manipulador com a condição padrão que não será chamado se o evento roteado já estiver marcado como tratado.true to register the handler such that it is invoked even when the routed event is marked handled in its event data; false to register the handler with the default condition that it will not be invoked if the routed event is already marked handled.

O padrão é false.The default is false.

Não solicite sempre para tratar novamente um evento roteado.Do not routinely ask to rehandle a routed event.

Examples

O exemplo a seguir implementa um manipulador invocado no evento Initialized em uma página que anexa um manipulador definido a um dos elementos nomeados na página usando handledEventsToo true.The following example implements a handler invoked on the Initialized event on a page that attaches a defined handler to one of the named elements on the page using handledEventsToo true. Esse manipulador seria invocado mesmo se outro elemento ao longo da rota marcou os dados de evento compartilhados como manipulados antes de alcançar o elemento de manipulação na rota.This handler would be invoked even if another element along the route marked the shared event data as handled before reaching the handling element in the route.

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

Remarks

O processamento de eventos de entrada de baixo nível de maneira prática é uma tarefa complexa.Processing low-level input events in a practical way is a complex task. Muitos controles implementam o comportamento em que um determinado evento é marcado como manipulado e é substituído por outro evento mais intuitivo.Many controls implement behavior where a certain event is marked as handled, and is replaced by another more intuitive event. Em geral, um controle só marcará um evento de entrada de plataforma como manipulado se houver alguma intenção de design para fazer isso.Generally, a control will only mark a platform input event as handled if there is some design intention for doing so. Em determinados cenários, essas intenções de design podem não ser o que a sua manipulação específica do evento de entrada requer.In certain scenarios, those design intentions might not be what your particular handling of the input event requires. É para esses cenários que registram manipuladores com handledEventsToo conforme true é apropriado.It is for these scenarios that registering handlers with handledEventsToo as true is appropriate. Mas você não deve fazer isso rotineiramente.But you should not do this routinely. Invocar manipuladores em resposta a todos os eventos, mesmo se tratado, complicará sua própria lógica de processamento de eventos de aplicativo.Invoking handlers in response to all events even if handled will complicate your own application event processing logic. Você poderá ver uma diminuição no desempenho se a lógica do manipulador for substancial.You may see a decrease in performance if the handler logic is substantial. Você deve reservar o uso de anexar manipuladores para eventos já tratados para situações em que você já descobriu durante o processo de desenvolvimento que determinados controles estão manipulando eventos que você ainda deseja manipular com a lógica do aplicativo.You should reserve the use of attaching handlers for already-handled events for situations where you have already discovered during the development process that certain controls are handling events that you still want to handle with application logic.

Outra técnica para evitar o comportamento de manipulação de classes de determinadas combinações de controle de eventos é usar a alternativa de visualização desse evento.Another technique for avoiding the class handling behavior of certain event-control combinations is to use that event's preview alternative. Por exemplo, se MouseLeftButtonDown for marcado como manipulado pela manipulação de classe, talvez seja possível adicionar manipuladores para PreviewMouseLeftButtonDown em vez disso.For example, if MouseLeftButtonDown is marked handled by class handling, you might be able to add handlers for PreviewMouseLeftButtonDown instead.

Você pode adicionar o mesmo manipulador para o mesmo evento várias vezes sem gerar uma exceção.You can add the same handler for the same event multiple times without raising an exception. No entanto, o manipulador é realmente invocado várias vezes quando o evento é manipulado.However, the handler is actually invoked multiple times when the event is handled. Portanto, considere como esse comportamento pode ter efeitos colaterais que devem ser considerados em sua implementação de manipulador.Therefore, consider how this behavior might have side effects that should be accounted for in your handler implementation.

Normalmente, você usa esse método para fornecer a implementação do acessador "Add" para o padrão de acesso de evento Microsoft .NETMicrosoft .NET de um evento roteado personalizado.You typically use this method to provide the implementation of the "add" accessor for the Microsoft .NETMicrosoft .NET event access pattern of a custom routed event.

Applies to