Событие клика для вновь добавленного пункта меню - PullRequest
1 голос
/ 25 марта 2012

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

MI.Items.Add(System.IO.Path.GetFullPath(ofd.FileName));

Ответы [ 3 ]

1 голос
/ 25 марта 2012

Просто создайте новый экземпляр класса MenuItem и подпишитесь на событие Click:

MenuItem newMenuItem = new MenuItem();
newMenuItem.Header = System.IO.Path.GetFullPath(ofd.FileName);
newMenuItem.Click += MenuItemOnClick; // The handler.
MI.Items.Add(newMenuItem);
0 голосов
/ 25 марта 2012

Получите MenuItem по его индексу и присоедините обработчик событий, используя синтаксис +=:

int itemIndex = MI.Items.Add(System.IO.Path.GetFullPath(ofd.FileName));
MenuItem item = MI.Items[itemIndex] as MenuItem;
item.Click += new RoutedEventHandler(Item_Click);
0 голосов
/ 25 марта 2012

Add возвращает целое число, указывающее индекс добавленного элемента, затем вы можете получить доступ к элементу коллекции, используя этот индекс, и, следовательно, подписаться на событие, так что вам придется сделать что-то вроде это:

var index = MI.Items.Add(System.IO.Path.GetFullPath(ofd.FileName));
((UIElement)MI.Items.GetItemAt(index)).MouseLeftButtonUp += OnMenuItemMouseUp;

void OnMenuItemMouseUp (object sender, MouseButtonEventArgs e) {

}
...