Compartilhar via


UIElement.AddHandler Método

Definição

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

Sobrecargas

AddHandler(RoutedEvent, Delegate)

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

AddHandler(RoutedEvent, Delegate, Boolean)

Adiciona um manipulador de eventos roteado para 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 o evento roteado que já havia sido marcado como manipulado por outro elemento ao longo da rota do evento.

AddHandler(RoutedEvent, Delegate)

Adiciona um manipulador de eventos roteado para 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 para o evento roteado a ser tratado.

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 roteado para 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 o evento roteado que já havia sido marcado como manipulado por outro elemento ao longo da rota do 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 para o evento roteado a ser tratado.

handler
Delegate

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

handledEventsToo
Boolean

true registrar o manipulador de modo que ele seja invocado mesmo quando o evento roteado é marcado como manipulado em seus dados de evento; false registrar o manipulador com a condição padrão de que ele não será invocado se o evento roteado já estiver marcado como manipulado.

O padrão é false.

Não peça rotineiramente para manipular novamente um evento roteado.

Exemplos

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 handledEventsTootrue. Esse manipulador seria invocado mesmo se outro elemento ao longo da rota marcasse os dados de evento compartilhados como manipulados antes de alcançar o elemento de tratamento 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 conforme 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 seu tratamento específico do evento de entrada requer. É para esses cenários que o registro de manipuladores com handledEventsToo como true é apropriado. Mas você não deve fazer isso rotineiramente. Invocar manipuladores em resposta a todos os eventos, mesmo que manipulados, 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á manipulados 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 manipulação de classe de determinadas combinações de controle de evento é usar a alternativa de visualização desse evento. Por exemplo, se MouseLeftButtonDown for marcado como manipulado pelo tratamento de classe, você poderá 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