Partager via


Comment : gérer un événement routé

Mise à jour : novembre 2007

Cet exemple illustre le fonctionnement des événements de propagation et indique comment écrire un gestionnaire permettant de traiter les données des événements routés.

Exemple

Dans Windows Presentation Foundation (WPF), les éléments sont organisés dans une arborescence d'éléments. L'élément parent peut participer à la gestion des événements déclenchés initialement par les éléments enfants dans l'arborescence d'éléments. Ceci est possible grâce au routage d'événement.

En règle générale, les événements routés respectent l'une des deux stratégies de routage : propagation ou tunneling. Cet exemple se concentre sur l'événement de propagation et utilise l'événement ButtonBase.Click pour indiquer le fonctionnement du routage.

L'exemple suivant utilise la syntaxe d'attribut XAML pour attacher un gestionnaire d'événements à un élément parent commun, qui correspond ici à StackPanel. Au lieu d'attacher un gestionnaire d'événements à chaque élément enfant Button, l'exemple utilise la syntaxe d'attribut pour attacher le gestionnaire d'événements à l'élément parent StackPanel. Ce modèle de gestion des événements indique comment utiliser le routage d'événements afin de réduire le nombre d'éléments attachés à un gestionnaire. Tous les événements de propagation de chaque Button passent par l'élément parent.

Sur l'élément parent StackPanel, le nom de l'événement Click spécifié comme attribut est partiellement qualifié en nommant la classe Button. La classe Button est une classe dérivée ButtonBase dont la liste de membres comporte l'événement Click. Cette technique de qualification partielle permettant d'attacher un gestionnaire d'événements est nécessaire si l'événement géré n'existe pas dans la liste de membres de l'élément auquel le gestionnaire d'événements routés est attaché.

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

Pour l'exemple complet, consultez Gestion d'événements routés, exemple.

Voir aussi

Concepts

Vue d'ensemble des entrées

Vue d'ensemble des événements routés

Terminologie de la syntaxe XAML

Référence

RoutedEvent

Autres ressources

Rubriques Comment relatives aux événements

Exemples d'événements