我有一个包含菜单和子菜单的应用程序.我已将Appliocation Commands附加到某些子菜单项,如剪切,复制和粘贴.
我还有一些其他菜单项没有应用程序命令.
如何添加自定义命令绑定到这些子菜单项?
我已经阅读了这篇文章,但无法将事件附加到我的子菜单项.
我使用一个静态类,我放在Window1类之后(或者无论窗口类是什么命名),我在其中创建RoutedUICommand类的实例:
public static class Command { public static readonly RoutedUICommand DoSomething = new RoutedUICommand("Do something", "DoSomething", typeof(Window1)); public static readonly RoutedUICommand SomeOtherAction = new RoutedUICommand("Some other action", "SomeOtherAction", typeof(Window1)); public static readonly RoutedUICommand MoreDeeds = new RoutedUICommand("More deeds", "MoreDeeeds", typeof(Window1)); }
使用Window1类所在的命名空间在窗口标记中添加命名空间:
xmlns:w="clr-namespace:NameSpaceOfTheApplication"
现在,我可以为命令创建绑定,就像应用程序命令一样:
并在菜单中使用绑定,例如:
您也可以直接在XAML中声明命令,而不是在静态类中定义它们.示例(改编自Guffas的好例子):
...
我知道我的答案为时已晚,但我希望它对未来有所帮助.
我喜欢Guffa和Heinzi的答案,但你只能使用一个命令来实现之前的结果.我通常使用"帮助"命令
我每次调用都使用CommandParametr,例如
要么
并在cs文件中
private void HelpExecuted(object sender, ExecutedRoutedEventArgs e) { string str = e.Parameter as string; switch (str) { case null://F1 Pressed default Help //Code break; case "Case1": //Code break; case "Case2": //Code break; case "Case3": //Code break; case "Case4": break; case "Case5": //Code break; case "Case6": //Code break; case "Case7": //Code break; } e.Handled = true; }
如果您使用MVVM模式
private void HelpExecuted(object sender, ExecutedRoutedEventArgs e) { string str = e.Parameter as string; Mvvm_Variable.Action(Input: str); e.Handled = true; }
并将开关移动到ViewModule站点.和Action是同一个ViewModule类中的方法.