2009-07-31 7 views
0

Ich habe ein Kontextmenü, das an eine Liste von Zeichenfolgen gebunden ist, so dass der Text jedes Menüelements ein Element der Zeichenfolgenliste ist. Jedes Menüelement ist auf denselben Ereignishandler eingestellt. Ich versuche herauszufinden, welcher Menüpunkt beim Aufruf des Event-Handlers angeklickt wurde.Den Text des Menüelements, auf das geklickt wurde, abrufen?

Ich würde denken, es wäre ziemlich einfach zu tun, aber ich bin ein wenig ratlos.

Wenn ich auf das Überwachungsfenster schaue, gibt es eine Menüelementeigenschaft namens FocusedItem. Es hat die Informationen, die ich brauche, aber wenn ich versuche, es zu benutzen, scheint es nicht Teil der Klasse zu sein und der Code kompiliert nicht einmal, was ich seltsam finde.

Kann mir jemand in die richtige Richtung zeigen?

Das Bit von XAML und Code, den ich habe Probleme mit:

<MenuItem Header="Add Object" ItemsSource="{Binding ObjectClassList}" Click="AddObject_Click"/> 

    private void AddObject_Click(object sender, RoutedEventArgs e) 
    { 
     MenuItem menuItem = sender as MenuItem; 

     if (menuItem == null) 
     { 
      return; 
     } 

     // menuItem.FocusedItem // ?? does not compile 


    } 

Dank!

Antwort

3

Dies funktioniert für mich, aber nicht 100% sicher, dass es der richtige Weg (es ist auf dem richtigen Weg aber!)

MenuItem m = (MenuItem)e.OriginalSource; 

ich glaube es korrekt ist, als „Container“ menuitem wird die Ereignisse Einwickeln für die String-Menüelemente, die Sie hinzugefügt haben. Die „OriginalSource“ wird der Klick auf den String-Menüpunkt sein ...

+0

Ah, ja. Das war's. Ich habe das Falsche benutzt. Außerdem ist das Abrufen des Texts so einfach wie das Abrufen der Header-Eigenschaft als Zeichenfolge. – djcouchycouch

2

Einige Hinweise, die hilfreich sein könnten, wenn die akzeptierte Antwort von Sk93 Lesen:

void Handle_RoutedEvent(object sender, RoutedEventArgs e) 
  • Absender ist das logische Element, das hat definiert den Event-Handler.
  • RoutedEventArgs.source ist das logische Element, das den Ereignishandler definiert hat.
  • RoutedEventArgs.originalSource ist das visuelle Element, auf das der Benutzer geklickt hat.
Verwandte Themen