Exportieren (0) Drucken
Alle erweitern
Dieser Artikel wurde maschinell übersetzt. Bewegen Sie den Mauszeiger über die Sätze im Artikel, um den Originaltext anzuzeigen. Weitere Informationen
Übersetzung
Original

Gewusst wie: Behandeln eines Routingereignisses

Dieses Beispiel zeigt die Funktionsweise von Bubbling-Ereignissen und das Schreiben eines Handlers, der die Daten des Routingereignisses verarbeiten kann.

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 werden zwei Button-Steuerelemente erstellt, und die XAML-Attributsyntax wird verwendet, um einen Ereignishandler an ein gemeinsames übergeordnetes Element anzufügen (in diesem Beispiel 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="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
  xmlns:x="http://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>


Im folgenden Beispiel wird das Click-Ereignis behandelt. Das Beispiel zeigt, welches Element das Ereignis behandelt und welches Element das Ereignis auslöst. Der Ereignishandler wird ausgeführt, wenn der Benutzer auf eine Schaltfläche klickt.


public partial class RoutedEventHandle : StackPanel
{
    StringBuilder eventstr = new StringBuilder();
    void HandleClick(object sender, RoutedEventArgs args)
    {
        // Get the element that handled the event.
        FrameworkElement fe = (FrameworkElement)sender;
        eventstr.Append("Event handled by element named ");
        eventstr.Append(fe.Name);
        eventstr.Append("\n");

        // Get the element that raised the event. 
        FrameworkElement fe2 = (FrameworkElement)args.Source;
        eventstr.Append("Event originated from source element of type ");
        eventstr.Append(args.Source.GetType().ToString());
        eventstr.Append(" with Name ");
        eventstr.Append(fe2.Name);
        eventstr.Append("\n");

        // Get the routing strategy.
        eventstr.Append("Event used routing strategy ");
        eventstr.Append(args.RoutedEvent.RoutingStrategy);
        eventstr.Append("\n");

        results.Text = eventstr.ToString();
    }
}


Community-Beiträge

HINZUFÜGEN
Microsoft führt eine Onlineumfrage durch, um Ihre Meinung zur MSDN-Website zu erfahren. Wenn Sie sich zur Teilnahme entscheiden, wird Ihnen die Onlineumfrage angezeigt, sobald Sie die MSDN-Website verlassen.

Möchten Sie an der Umfrage teilnehmen?
Anzeigen:
© 2015 Microsoft