Obtendo o texto do item de menu que foi clicado?
Pergunta
Eu tenho um menu de contexto que está vinculado a uma lista de strings para que o texto de cada item de menu é um elemento da lista de string. Cada item de menu está definido para o mesmo manipulador de eventos. O que eu estou tentando fazer é descobrir é qual item de menu foi clicado quando quando o manipulador de eventos é chamado.
Eu acho que seria bastante simples de fazer, mas estou um pouco perplexo.
Se eu olhar para a janela do relógio, há uma propriedade MenuItem chamado FocusedItem. Ele tem a informação de que preciso, mas quando eu tento usá-lo não parece ser parte da classe eo código nem sequer compilar, o que eu acho estranho.
Pode alguém me aponte na direção certa?
O pouco de XAML e código que eu estou tendo problemas com:
<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
}
Obrigado!
Solução
Isso funciona para mim, mas não 100% de certeza que é o caminho certo (é no caminho certo embora!)
MenuItem m = (MenuItem)e.OriginalSource;
Eu acredito que é correto, como o "container" menuitem está encerrando os eventos para os itens do menu de cordas que você adicionou. O "OriginalSource" será o clique no item de menu corda ...
Outras dicas
Algumas notas que podem ser úteis ao ler a resposta aceito por Sk93:
void Handle_RoutedEvent(object sender, RoutedEventArgs e)
- remetente é o elemento lógico que definiu o manipulador de eventos.
- RoutedEventArgs.source é o elemento lógico que definiu o manipulador de eventos.
- RoutedEventArgs.originalSource é o elemento visual que o usuário clicou.