none
EventHandler Übergabe-Parameter RRS feed

  • Frage

  • Hallo,

    diesmal was einfaches.

    Wenn ich ein EventHandler eines WPF-Objekt in der CodeBehind-Datei erstelle, woher nehme ich denn die Übergabe-Parameter?

    Bsp.

    XAML <TreeView  SelectedItemChanged="tvLogbuch_SelectedItemChanged"></TreeView>

    CodeBehind tv_sortLogbuch.SelectedItemChanged += tvLogbuch_SelectedItemChanged(sender, e);

    Die Event-Handler-Methode ist als
    private void tvLogbuch_SelectedItemChanged(object sender, RoutedPropertyChangedEventArgs<object> e)
    deklariert.

    Doch woher nehme ich jetzt

    sender  =  tvLogbuch?
    e = ???

    Fred

    Dienstag, 22. Februar 2011 15:14

Antworten

  • Sender und RoutedPropertyChangedEventArgs werden automatisch übergeben, wenn sich das selected item ändert.

    Entweder gibst du dem TreeView einen Namen (x:Name="MyTreeView ") und greifst dann auf den TreeView per MyTreeView drauf zu.
    Oder du castest den "sender" Parameter und verwendest das übergebene Item aus dem TreeView.

    Beispiele:
    private void tvLogbuch_SelectedItemChanged(object sender, RoutedPropertyChangedEventArgs<object> e)
    {

       this.MyTreeView...
       ...

       //oder

       TreeViewItem item = sender as TreeViewItem; => Hier mal debuggen, ob es wirklich ein TreeViewItem ist (kann im Moment nicht testen...)
       ... 

    }

     <TreeView  x:Name="MyTreeView"
                      SelectedItemChanged="tvLogbuch_SelectedItemChanged">
    ...

    • Als Antwort markiert perlfred Dienstag, 22. Februar 2011 19:50
    Dienstag, 22. Februar 2011 15:38
    Beantworter

Alle Antworten

  • Sender und RoutedPropertyChangedEventArgs werden automatisch übergeben, wenn sich das selected item ändert.

    Entweder gibst du dem TreeView einen Namen (x:Name="MyTreeView ") und greifst dann auf den TreeView per MyTreeView drauf zu.
    Oder du castest den "sender" Parameter und verwendest das übergebene Item aus dem TreeView.

    Beispiele:
    private void tvLogbuch_SelectedItemChanged(object sender, RoutedPropertyChangedEventArgs<object> e)
    {

       this.MyTreeView...
       ...

       //oder

       TreeViewItem item = sender as TreeViewItem; => Hier mal debuggen, ob es wirklich ein TreeViewItem ist (kann im Moment nicht testen...)
       ... 

    }

     <TreeView  x:Name="MyTreeView"
                      SelectedItemChanged="tvLogbuch_SelectedItemChanged">
    ...

    • Als Antwort markiert perlfred Dienstag, 22. Februar 2011 19:50
    Dienstag, 22. Februar 2011 15:38
    Beantworter
  • Hallo ClassMP2002 ! Teilnehmermedaillen Teilnehmermedaillen Teilnehmermedaillen Teilnehmermedaillen

    Sender und RoutedPropertyChangedEventArgs werden automatisch übergeben!

    tv_sortLogbuch.SelectedItemChanged += tvLogbuch_SelectedItemChanged;

    (Referenz auf Methode)  Soooo einfach ... Heul ;-)

    Zum zweiten Teil der Antwort:

    Auf das selektierte Item greife ich immer auf folgende Art zu:

              
    TreeViewItem pSelectItem = ((TreeView)e.Source).SelectedItem as TreeViewItem;                   // Akt. selektierter Eintrag

    Also nochmals vielen Dank für deine Hilfe!

    Fred.

    Dienstag, 22. Februar 2011 19:49