2009-07-31 7 views
0

J'ai un menu contextuel qui est lié à une liste de chaînes de sorte que le texte de chaque menuitem est un élément de la liste de chaînes. Chaque menuitem est défini sur le même gestionnaire d'événements. Ce que j'essaie de faire est de déterminer quel élément de menu a été cliqué quand le gestionnaire d'événements est appelé.Obtention du texte de l'élément de menu sur lequel vous avez cliqué?

Je pense que ce serait assez simple à faire, mais je suis un peu perplexe.

Si je regarde la fenêtre de surveillance, il y a une propriété menuitem appelée FocusedItem. Il a l'information dont j'ai besoin, mais quand j'essaie de l'utiliser, il ne semble pas faire partie de la classe et le code ne compile même pas, ce que je trouve étrange.

Quelqu'un peut-il me diriger dans la bonne direction?

Le bit de XAML et le code que je vais avoir des problèmes avec:

<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 


    } 

Merci!

Répondre

3

Cela fonctionne pour moi, mais pas à 100% sûr qu'il est la bonne façon (il est sur la bonne voie si!)

MenuItem m = (MenuItem)e.OriginalSource; 

I belive il est correct, comme le « conteneur » menuitem est enveloppant les événements pour les éléments de menu de chaîne que vous avez ajoutés. Le « OriginalSource » sera le clic sur l'élément de menu string ...

+0

Ah, oui. C'était ça. J'utilisais la mauvaise chose. De plus, obtenir le texte est aussi simple que d'obtenir la propriété Header en tant que chaîne. – djcouchycouch

2

Quelques notes qui pourraient être utiles lors de la lecture de la réponse acceptée par SK93:

void Handle_RoutedEvent(object sender, RoutedEventArgs e) 
  • expéditeur est l'élément logique qui a défini le gestionnaire d'événements.
  • RoutedEventArgs.source est l'élément logique qui a défini le gestionnaire d'événements. RoutedEventArgs.originalSource est l'élément visuel sur lequel l'utilisateur a cliqué.
Questions connexes