菜单项单击事件根据索引

时间:2012-03-25 15:50:48

标签: c# wpf menuitem

我有一个菜单项,其中包含子菜单项。单击其中一个菜单项时,将触发一个事件并根据单击的菜单项的索引执行某些操作。我见过这样的应用程序,但在那些情况下,菜单项的名称是标准而不是索引。我想要这样的东西:

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
    }
}

1 个答案:

答案 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++; } 是父菜单的名称