C# 菜单项根据索引单击事件
我有一个包含子菜单项的菜单项。单击其中一个菜单项时,将触发一个事件,并根据单击菜单项的索引执行操作。我见过这样的应用程序,但在那个些情况下,菜单项的名称不是索引。我想要这样的东西:C# 菜单项根据索引单击事件,c#,wpf,menuitem,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 s
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
}
}
<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 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
}
}
<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>
编辑:
要更改已创建的菜单项的标记
,可以使用以下命令:
int poz = 10;
foreach (MenuItem menuItem in mi.Items)
{
menuItem.Tag = poz++;
}
其中mi
是父菜单的名称您可以尝试以下操作:
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
}
}
<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>
编辑:
要更改已创建的菜单项的标记
,可以使用以下命令:
int poz = 10;
foreach (MenuItem menuItem in mi.Items)
{
menuItem.Tag = poz++;
}
其中mi
是父菜单的名称Nice,但我经常添加和删除菜单项。我可以在创建菜单项时设置它们的标记
,但如何修改已创建菜单项的标记?目的是,添加新菜单项时,其标记为零,其他项的标记应移动1。您可以维护一个菜单项列表,其中标记为列表中的索引,插入新菜单项时更新列表中的标记。您可以告诉我如何更改已创建菜单项的标记吗。作为伪代码,类似于:mi.Items[1].Tag=num
。不错,但我经常添加和删除菜单项。我可以在创建菜单项时设置它们的标记
,但如何修改已创建菜单项的标记?目的是,添加新菜单项时,其标记为零,其他项的标记应移动1。您可以维护一个菜单项列表,其中标记为列表中的索引,插入新菜单项时更新列表中的标记。您可以告诉我如何更改已创建菜单项的标记吗。作为伪代码,类似于:mi.Items[1].Tag=num
。为什么需要这个?您可以为每个项目创建单独的单击
事件处理程序,或者如果使用MVVM
,每个项目都可以有自己的命令
绑定。因为我经常添加和删除菜单项。为什么需要这个?您可以为每个项目创建单独的单击
事件处理程序,或者如果使用MVVM
,每个项目都可以有自己的命令
绑定。因为我经常添加和删除菜单项。