Gewusst wie: Behandeln eines Routingereignisses
Aktualisiert: November 2007
Dieses Beispiel zeigt die Funktionsweise von Bubbling-Ereignissen und das Schreiben eines Handlers, der die Daten des Routingereignisses verarbeiten kann.
Beispiel
In Windows Presentation Foundation (WPF) werden Elemente in einer Elementstruktur angeordnet. Das übergeordnete Element kann sich an der Behandlung von Ereignissen beteiligen, die ursprünglich von untergeordneten Elementen in der Elementstruktur ausgelöst wurden. Dies ist aufgrund des Ereignisroutings möglich.
Routingereignisse verfolgen normalerweise eine der folgenden Routingstrategien: Bubbling oder Tunneling. In diesem Beispiel wird das Bubbling-Ereignis und das ButtonBase.Click-Ereignis verwendet, um das Routing zu verdeutlichen.
Im folgenden Beispiel wird die XAML-Attributsyntax verwendet, um einen Ereignishandler einem gemeinsamen übergeordneten Element hinzuzufügen. In diesem Beispiel ist dies StackPanel. Anstatt einzelne Ereignishandler für jedes untergeordnete Button-Element anzufügen, wird im Beispiel die Attributsyntax verwendet, um den Ereignishandler dem übergeordneten StackPanel-Element hinzuzufügen. Dieses Ereignisbehandlungsmuster zeigt, wie Sie das Ereignisrouting als Verfahren zum Reduzieren der Anzahl an Elementen verwenden, an die ein Handler angefügt wurde. Alle Bubbling-Ereignisse für die einzelnen Button-Elemente werden über das übergeordnete Element geroutet.
Beachten Sie, dass für das übergeordnete StackPanel-Element der als Attribut angegebene Click-Ereignisname teilweise qualifiziert wird, indem die Button-Klasse benannt wird. Die Button-Klasse ist eine von ButtonBase abgeleitete Klasse, deren Memberauflistung über das Click-Ereignis verfügt. Dieses Teilqualifikationsverfahren zum Anfügen eines Ereignishandlers ist erforderlich, wenn das behandelte Ereignis in der Memberauflistung des Elements nicht vorhanden ist, an das der Routingereignishandler angefügt ist.
<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>
Das vollständige Beispiel finden Sie unter Beispiel für die Routingereignisbehandlung.
Siehe auch
Konzepte
Übersicht über Routingereignisse