我有一个菜单项,其中包含子菜单项。单击其中一个菜单项时,将触发一个事件并根据单击的菜单项的索引执行某些操作。我见过这样的应用程序,但在那些情况下,菜单项的名称是标准而不是索引。我想要这样的东西:
private void MI_Click (object sender, RoutedEventArgs e)
{
MenuItem mnu = (MenuItem)e.OriginalSource;
switch (mnu.Items.Index) // I know there is no such thing
{
case 0: {// do something}
case 1: {// do something}
// and so on
}
}
答案 0 :(得分:3)
您可以尝试这样的事情:
<MenuItem Header="_Menu">
<MenuItem Header="Menu1" Click="MenuItem_Click" Tag="1" />
<MenuItem Header="Menu2" Click="MenuItem_Click" Tag="2" />
<MenuItem Header="Menu3" Click="MenuItem_Click" Tag="3" />
</MenuItem>
在代码中:
private void MenuItem_Click(object sender, RoutedEventArgs e)
{
MenuItem mi = sender as MenuItem;
if (mi != null)
{
int tag;
int.TryParse(mi.Tag.ToString(), out tag);
switch (tag)
{
case 1:
break;
case 2:
break;
case 3:
break;
}
}
}
编辑:
要更改已创建Tag
的{{1}},您可以使用此功能:
MenuItems
其中 int poz = 10;
foreach (MenuItem menuItem in mi.Items)
{
menuItem.Tag = poz++;
}
是父菜单的名称