Share via


Cómo: Controlar un evento enrutado

Actualización: noviembre 2007

En este ejemplo se muestra cómo funcionan los eventos de propagación y cómo se escribe un controlador capaz de procesar los datos del evento enrutado.

Ejemplo

En Windows Presentation Foundation (WPF), los elementos se organizan organizados en una estructura de árbol de elementos. El elemento primario puede participar en el control de los eventos provocados inicialmente por elementos secundarios del árbol de elementos. Esto es posible gracias al enrutamiento de eventos.

Los eventos enrutados suelen seguir una de las dos estrategias de enrutamiento, propagación o túnel. Este ejemplo se centra en el evento de propagación y utiliza el evento ButtonBase.Click para mostrar cómo funciona el enrutamiento.

En el ejemplo siguiente se utiliza la sintaxis de atributo de XAML para asociar un controlador de eventos a un elemento primario común, que en este ejemplo es StackPanel. En lugar de asociar los controladores de eventos individuales a cada elemento secundario Button, en el ejemplo se utiliza la sintaxis de atributo para asociar el controlador de eventos al elemento primario StackPanel. Este modelo de control de eventos muestra cómo utilizar el enrutamiento de eventos como técnica para reducir el número de elementos a los que se asocia un controlador. Todos los eventos de propagación de cada Button se enrutan a través del elemento primario.

Observe que en el elemento primario StackPanel, el nombre del evento Click especificado como atributo se certifica parcialmente nombrando la clase Button. La clase Button es una clase derivada de ButtonBase que tiene el evento Click en su lista de miembros. Esta técnica de la certificación parcial para asociar un controlador de eventos es necesaria si el evento controlado no existe en la lista de miembros del elemento al que está asociado el controlador del evento enrutado.

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

Para obtener el ejemplo completo, vea Ejemplo Routed Event Handling.

Vea también

Conceptos

Información general sobre acciones del usuario

Información general sobre eventos enrutados

Terminología de la sintaxis de XAML

Referencia

RoutedEvent

Otros recursos

Temas "Cómo..." sobre eventos

Ejemplos de eventos