Получение текста пункта меню, по которому щелкнули? - PullRequest
0 голосов
/ 31 июля 2009

У меня есть контекстное меню, связанное со списком строк, так что текст каждого пункта меню является элементом списка строк. Каждый пункт меню настроен на один и тот же обработчик событий. Я пытаюсь выяснить, какой пункт меню был нажат при вызове обработчика события.

Я думаю, это было бы довольно просто сделать, но я немного озадачен.

Если я посмотрю в окно просмотра, есть свойство menuitem под названием FocusedItem. В нем есть информация, которая мне нужна, но когда я пытаюсь ее использовать, она, кажется, не является частью класса, и код даже не компилируется, что я нахожу странным.

Может ли кто-нибудь указать мне правильное направление?

Часть кода 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 ]

3 голосов
/ 31 июля 2009

Это работает для меня, но не на 100% уверен, что это правильный путь (хотя и на правильном пути!)

MenuItem m = (MenuItem)e.OriginalSource;

Я верю, что это правильно, так как пункт меню "контейнер" оборачивает события для пунктов меню строки, которые вы добавили. «OriginalSource» будет щелчком по пункту меню строки ...

2 голосов
/ 09 декабря 2009

Некоторые примечания, которые могут быть полезны при чтении принятого ответа Sk93:

void Handle_RoutedEvent(object sender, RoutedEventArgs e)
  • отправитель - это логический элемент, который определил обработчик события.
  • RoutedEventArgs.source - это логический элемент, который определил обработчик событий.
  • RoutedEventArgs.originalSource - это визуальный элемент, по которому щелкнул пользователь.
...