Compartilhar via


Como: Handle a Routed Event

Este exemplo mostra como eventos bolha funcionam e como escrever um tratador que pode processar os dados do evento roteado.

Exemplo

Em Windows Presentation Foundation (WPF), os elementos são organizados em uma estrutura de árvore de elementos. O elemento pai pode participar no tratamento de eventos que são inicialmente levantados pelos elementos filhos na árvore de elementos. Isso é possível por causa do roteamento de eventos.

Eventos roteados normalmente seguem uma de duas estratégias de roteamento, bolheamento ou tunelamento. Este exemplo enfoca o evento em bolheamento e usa o evento ButtonBase.Click para mostrar como roteamento funciona.

O exemplo a seguir usa a sintaxe XAML de atributo para anexar um tratador de eventos um elemento pai comum, que neste exemplo, é StackPanel. Em vez de anexar tratadores de eventos individuais para cada elemento filho Button, o exemplo usa a sintaxe de atributo para anexar o tratador de eventos ao elemento pai StackPanel. Esse padrão de tratamento de eventos mostra como usar roteamento de eventos como uma técnica para reduzir o número de elementos aos quais um manipulador está anexado. Todos os eventos em bolheamento para cada Button seguem uma rota através de elemento pai.

Observe que no elemento StackPanel pai, o nome do evento Click especificado como o atributo é parcialmente qualificado ao nomear a classe Button. A classe Button é uma classe derivada de ButtonBase que possui o evento Click sua lista de membros. Essa técnica parcial de qualificação para anexar um tratador de eventos é necessária se o evento que está sendo tratado não existe na lista de membros do elemento ao qual o tratador de eventos roteado está conectado.

<StackPanel
  xmlns="https://schemas.microsoft.com/winfx/2006/xaml/presentation"
  xmlns:x="https://schemas.microsoft.com/winfx/2006/xaml"
  x:Class="SDKSample.RoutedEventHandle"
  Name="dpanel"
  Button.Click="HandleClick"
>
  <StackPanel.Resources>
      <Style TargetType="{x:Type Button}">
        <Setter Property="Height" Value="20"/>
        <Setter Property="Width" Value="250"/>
        <Setter Property="HorizontalAlignment" Value="Left"/>
      </Style>
  </StackPanel.Resources>
  <Button Name="Button1">Item 1</Button>
  <Button Name="Button2">Item 2</Button>
  <TextBlock Name="results"/>
</StackPanel>

For the complete sample, see Eventos roteados Manipulação exemplo.

Consulte também

Conceitos

Input Overview

Visão geral sobre eventos roteados

Terminologia de sintaxe XAML

Referência

RoutedEvent

Outros recursos

Events How-to Topics

Exemplos de eventos