单击其中一个菜单项时禁用其他菜单项c#

单击其中一个菜单项时禁用其他菜单项c#,c#,wpf,contextmenu,C#,Wpf,Contextmenu,我在WPF客户端C#应用程序中有一个简单的菜单,用户一次只能选择一项。如果选择了其中一个项目,则应禁用其他项目,直到操作完成 例如,我有以下菜单 <MenuItem Header="Help"> <Separator></Separator> <MenuItem Header="User Manual.." Click="UsageDocMenuItem_Click" />

我在WPF客户端C#应用程序中有一个简单的菜单,用户一次只能选择一项。如果选择了其中一个项目,则应禁用其他项目,直到操作完成

例如,我有以下菜单

 <MenuItem Header="Help">
            <Separator></Separator>
            <MenuItem Header="User Manual.." Click="UsageDocMenuItem_Click" />
            <Separator></Separator>
            <MenuItem Header="Login"  Click="LoginItem_Click"/>
            <Separator></Separator>
            <MenuItem Header="About"  Click="AboutMenuItem_Click"/>
            <Separator></Separator>
        </MenuItem>`

`
如果用户单击“登录”,则应禁用“用户手册”和“关于”,直到登录触发的操作完成


哪种C#设计或代码方法可以用来实现这一点?

您的问题不是很详细。如果您只需要基本的逻辑/概念,那么您可能只需要这样一种方法:

public void DisableAllButOneMenuItem(int idOfSelectedMenuItem)
{
    // Code that disables all itmes, 
    // then code that enables a single item again.
}

这意味着有菜单项,当用户点击其中一个时,例如:登录 然后,在操作完成之前,应启用登录,并禁用其他菜单项

您需要创建一个按钮单击事件,并在该事件中编写代码以查找其他菜单项并禁用它们

Button_click Event(...)
{
//...disable other menu items
}

假设您使用的是“WPF”,则可以使用命令和包含这些命令的ViewModel来确定命令是否已启用。通过这种方式,您的ViewModel也知道您所处的“模式”。

我找到了解决方案。我不确定是否可以使用所选菜单项的ID,因为我想一次禁用整个菜单。我可以这样说:

<MenuItem Header="Help" Name="help">
        <Separator></Separator>
        <MenuItem Header="User Manual.."  Click="UsageDocMenuItem_Click" />
        <Separator></Separator>
        <MenuItem Header="Login"  Click="LoginItem_Click"/>
        <Separator></Separator>
        <MenuItem Header="About"  Click="AboutMenuItem_Click"/>
        <Separator></Separator>
    </MenuItem>`

void UsageDocMenuItem_Click()
{
    help.IsEnabled = false;
    //Do stuff
    help.IsEnabled = true;
}

`
作废UsageDocMenuItem\u单击()
{
help.IsEnabled=false;
//做事
help.IsEnabled=true;
}

通过给菜单项命名,我可以在代码中的任何位置访问它。

您必须向我们展示一些代码,无法帮助您了解这些信息。哪种技术?WInforms/WPF还有什么?技术是WPFYes您正确理解了我的问题。我已经为每个按钮点击设置了事件,如上面的代码片段所示。我只需要知道如何访问其他菜单项?Web应用程序还是窗口?Windows WPF应用程序我现在已经为我的问题添加了更多细节。考虑到我已经为每个菜单项创建了“单击”事件,您能告诉我如何获取所选菜单项的ID并访问代码中的父项吗?