我有一个上下文菜单,它绑定到一个字符串列表,这样每个menuitem的文本都是字符串列表的一个元素。每个menuitem都设置为相同的事件处理程序。我要做的是弄清楚在调用事件处理程序时单击了哪个菜单项。
我认为这样做很简单,但我有点难过。
如果我查看观察窗口,就会有一个名为FocusedItem的menuitem属性。它有我需要的信息,但是当我尝试使用它时,它似乎不是类的一部分,代码甚至没有编译,我觉得很奇怪。
有人能指出我正确的方向吗?
xaml和代码我遇到了麻烦:
<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
}
谢谢!
答案 0 :(得分:3)
这对我有用,但并非100%确定它是正确的方式(虽然它在正确的道路上!)
MenuItem m = (MenuItem)e.OriginalSource;
我相信它是正确的,因为“容器”menuitem正在包装你添加的字符串菜单项的事件。 “OriginalSource”将点击字符串菜单项...
答案 1 :(得分:2)
在阅读Sk93接受的答案时可能会有所帮助的一些注意事项:
void Handle_RoutedEvent(object sender, RoutedEventArgs e)