Zum Hauptinhalt springen

Ereignishandler

Allgemein

In WPF können Ereignishandler verwendet werden, um auf bestimmte Ereignisse von UI-Elementen oder anderen Objekten in Ihrer Anwendung zu reagieren.

Um einen Ereignishandler in WPF zu erstellen, folgen Sie diesen Schritten:

  1. Identifizieren Sie das Ereignis, das Sie behandeln möchten. Ereignisse in WPF werden in der Regel als RoutedEvents deklariert und folgen einer Namenskonvention von "Ereignisname" + "EventHandler". Zum Beispiel hat das Button-Steuerelement ein Click-Ereignis, daher würde der entsprechende Ereignishandler ButtonClickEventHandler heißen.

  2. In Ihrer XAML-Datei suchen Sie das UI-Element, dem Sie den Ereignishandler zuweisen möchten. Fügen Sie dem Element das Attribut EventHandler hinzu und geben Sie den Namen des Ereignisses sowie den Namen der Ereignishandler-Methode an. Zum Beispiel:

    <Button Content="Klick mich" Click="Button_Click" />
  3. In Ihrer Code-Behind-Datei (die zugehörige C#-Datei für Ihre XAML-Datei) definieren Sie die Ereignishandler-Methode mit demselben Namen wie in der XAML angegeben. Die Methode sollte einen Rückgabetyp von void haben und zwei Parameter akzeptieren: das Objekt, das das Ereignis ausgelöst hat (in der Regel sender genannt) und eine Instanz der Ereignisargumente (in der Regel als e bezeichnet). Zum Beispiel:

    private void Button_Click(object sender, RoutedEventArgs e)
    {
    // Ereignisbehandlungslogik hier
    }
  4. Innerhalb der Ereignishandler-Methode können Sie die Logik schreiben, um auf das Ereignis zu reagieren. Dies kann das Aktualisieren von UI-Elementen, das Durchführen von Berechnungen oder das Auslösen anderer Aktionen umfassen.

  5. Alternativ kann die Verkünpfung auch in der Code-Behind Datei passieren.

    <Button x:Name="btn1" Content="Click me"/>
     public MainWindow()
    {
    InitializeComponent();
    btn1.Click += new RoutedEventHandler(Button_Click);
    // Kurzschreibweise
    //btn1.Click += Button_Click;
    }

Durch das Hinzufügen des Ereignishandlers in der XAML und die Implementierung der entsprechenden Methode im Code-Behind wird die Verbindung zwischen dem UI-Element und dem Code hergestellt, der ausgeführt werden soll, wenn das Ereignis eintritt.

Routing-Strategien

In WPF gibt es drei Routingstrategien für Ereignisse: Direct, Tunneling und Bubbling. Diese Routingstrategien bestimmen, wie ein Ereignis in der visuellen Struktur der WPF-Anwendung weitergeleitet wird.

  1. Direct Routing (Direktes Routing): Bei dieser Strategie wird das Ereignis direkt an das Element gesendet, auf dem es ausgelöst wurde, ohne dass es an übergeordnete oder untergeordnete Elemente weitergeleitet wird. Es handelt sich um eine einfache und direkte Weiterleitung des Ereignisses.

  2. Tunneling Routing (Tunneling): Bei dieser Strategie wird das Ereignis vom Wurzelelement der visuellen Struktur ausgehend durch die hierarchische Baumstruktur zu den untergeordneten Elementen hinabgeleitet. Dabei werden Ereignistunneling-Ereignisse wie z.B. PreviewMouseDown verwendet. Es ermöglicht übergeordneten Elementen, das Ereignis vor den untergeordneten Elementen zu behandeln.

  3. Bubbling Routing (Bubbeling): Bei dieser Strategie wird das Ereignis vom auslösenden Element nach oben durch die hierarchische Baumstruktur an übergeordnete Elemente weitergeleitet. Dabei werden Bubbling-Ereignisse wie z.B. MouseUp verwendet. Es ermöglicht übergeordneten Elementen, das Ereignis nach den untergeordneten Elementen zu behandeln.

Die Wahl der Routingstrategie hängt von den Anforderungen und dem Verhalten der Ereignisbehandlung ab. Sie können die Routingstrategie für ein Ereignis in XAML festlegen, indem Sie das entsprechende Ereignisattribut verwenden. Zum Beispiel PreviewMouseDown für Tunneling und MouseUp für Bubbling.

Beispiel:

<Button PreviewMouseDown="Button_PreviewMouseDown" MouseUp="Button_MouseUp" />

Im obigen Beispiel wird das PreviewMouseDown-Ereignis mit dem Ereignishandler Button_PreviewMouseDown für Tunneling und das MouseUp-Ereignis mit dem Ereignishandler Button_MouseUp für Bubbling verknüpft.

Es ist wichtig zu beachten, dass nicht alle Ereignisse sowohl Tunneling als auch Bubbling unterstützen. Einige Ereignisse sind auf eine bestimmte Routingstrategie festgelegt.


Kommentare