Я создал контекстное меню в форме wpf. И пункты меню добавляются во время выполнения.ниже приведен фрагмент кода XAML для добавления контекстного меню:
<Window.ContextMenu>
<ContextMenu AllowDrop="True" VerticalContentAlignment="Top" Opened="note_Opened" >
<MenuItem Header="View Notes" Click="MenuItemViewNotes_Click" Name="mainMenu" />
...............................
</ContextMenu>
</Window.ContextMenu>
пункты меню добавляются следующим образом:
private void note_Opened(object sender, RoutedEventArgs e)
{
......... //some codes goes here
while(reader.Read()){
MenuItem newItem = new MenuItem();
newItem.Header = textEncrypt.DecryptString(reader[2].ToString());
// newItem.Click += new RoutedEventHandler(MenuItemViewNotes_Click);
mainMenu.Items.Add(newItem);
}
}
}
следующие методы "MenuItemViewNotes_Click". Я хочу получитьcoresponding индекс выбранного элемента меню. Но я не смог дать имя или индекс при добавлении элемента вышеописанным способом. Есть ли способ сделать это?
private void MenuItemViewNotes_Click(object sender, RoutedEventArgs e)
{
mainMenu.Items.Clear();
MenuItem mi = sender as MenuItem;
if (mi!= null)
{
MessageBox.Show(mi.Header.ToString());
}
}
здесь я не получилЯ думаю, что это может быть неправильно даже при обработке.
снова следует код xaml, где вызов функций "note_opend" и "MainItemViewNotes_click"
<ContextMenu AllowDrop="True" VerticalContentAlignment="Top" Opened="note_Opened" >
<MenuItem Header="View Notes" Name="mainMenu" >
<MenuItem Header="note1" Click="MenuItemViewNotes_Click" IsCheckable="True"/>
</MenuItem>
<MenuItem Header="Settings" Click="MenuItemSettings_Click"/>
<MenuItem Header="Close" Click="MenuItemClose_Click"/>
</ContextMenu>