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
Visão geral sobre eventos roteados