UIElement.AddHandler Método

Definição

Adiciona um manipulador de eventos roteados de um evento roteado especificado, adicionando o manipulador à coleção de manipuladores no elemento atual.

Sobrecargas

AddHandler(RoutedEvent, Delegate)

Adiciona um manipulador de eventos roteados de um evento roteado especificado, adicionando o manipulador à coleção de manipuladores no elemento atual.

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. 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.

AddHandler(RoutedEvent, Delegate)

Adiciona um manipulador de eventos roteados de um evento roteado especificado, adicionando o manipulador à coleção de manipuladores no elemento atual.

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

Um identificador do evento roteado a ser manipulado.

handler
Delegate

Uma referência à implementação do manipulador.

Implementações

Comentários

Você pode adicionar o mesmo manipulador para o mesmo evento várias vezes sem gerar uma exceção. No entanto, o manipulador é invocado várias vezes quando o evento é tratado. Portanto, considere como esse comportamento pode ter efeitos colaterais que devem ser contabilizados na implementação do manipulador.

Normalmente, você usa esse método para fornecer a implementação do acessador "add" para o padrão de acesso a eventos do Microsoft .NET de um evento roteado personalizado.

Aplica-se a

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. 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.

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

Um identificador do evento roteado a ser manipulado.

handler
Delegate

Uma referência à implementação do manipulador.

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.

O padrão é false.

Não solicite sempre para tratar novamente um evento roteado.

Exemplos

O exemplo a seguir implementa um manipulador invocado no Initialized evento em uma página que anexa um manipulador definido a um dos elementos nomeados na página usando handledEventsTootrue. Esse manipulador seria invocado mesmo se outro elemento ao longo da rota marcasse os dados de evento compartilhados como manipulados antes de atingir o elemento de manipulação na rota.

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

Comentários

Processar eventos de entrada de baixo nível de forma prática é uma tarefa complexa. Muitos controles implementam o comportamento em que um determinado evento é marcado como manipulado e é substituído por outro evento mais intuitivo. Em geral, um controle marcará apenas um evento de entrada de plataforma como tratado se houver alguma intenção de design para fazer isso. Em determinados cenários, essas intenções de design podem não ser o que sua manipulação específica do evento de entrada requer. É para esses cenários que o registro de manipuladores com handledEventsToo o true é apropriado. Mas você não deve fazer isso rotineiramente. Invocar manipuladores em resposta a todos os eventos, mesmo se tratados, complicará sua própria lógica de processamento de eventos de aplicativo. Você poderá ver uma diminuição no desempenho se a lógica do manipulador for substancial. Você deve reservar o uso de manipuladores de anexação para eventos já tratados para situações em que você já descobriu durante o processo de desenvolvimento que determinados controles estão tratando eventos que você ainda deseja lidar com a lógica do aplicativo.

Outra técnica para evitar o comportamento de tratamento de classe de determinadas combinações de controle de eventos é usar a alternativa de visualização desse evento. Por exemplo, se MouseLeftButtonDown for marcado como manipulado pelo tratamento de classe, talvez você possa adicionar manipuladores para PreviewMouseLeftButtonDown em vez disso.

Você pode adicionar o mesmo manipulador para o mesmo evento várias vezes sem gerar uma exceção. No entanto, o manipulador é invocado várias vezes quando o evento é tratado. Portanto, considere como esse comportamento pode ter efeitos colaterais que devem ser contabilizados na implementação do manipulador.

Normalmente, você usa esse método para fornecer a implementação do acessador "add" para o padrão de acesso a eventos do Microsoft .NET de um evento roteado personalizado.

Aplica-se a