获取单击的菜单项的文本?

时间:2009-07-31 15:04:13

标签: c# wpf menuitem

我有一个上下文菜单,它绑定到一个字符串列表,这样每个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


    }

谢谢!

2 个答案:

答案 0 :(得分:3)

这对我有用,但并非100%确定它是正确的方式(虽然它在正确的道路上!)

MenuItem m = (MenuItem)e.OriginalSource;

我相信它是正确的,因为“容器”menuitem正在包装你添加的字符串菜单项的事件。 “OriginalSource”将点击字符串菜单项...

答案 1 :(得分:2)

在阅读Sk93接受的答案时可能会有所帮助的一些注意事项:

void Handle_RoutedEvent(object sender, RoutedEventArgs e)
  • sender是已定义事件处理程序的逻辑元素。
  • RoutedEventArgs.source是已定义事件处理程序的逻辑元素。
  • RoutedEventArgs.originalSource是用户点击的可视元素。