我的应用程序是使用C#(WPF和Prism)开发的。它有4个项目,每个项目有不同的区域:
我完成了菜单快捷键的绑定,它工作正常但是我需要先选择一个菜单标题,例如,如果我想在 CTRL + N 上打开新的dashBoard窗口需要在菜单栏上选择New
菜单。如果您查看其他应用程序,如Word,记事本等,如果按 CTR + N ,它会打开新文件,您无需进入新菜单。
这是由于棱镜的不同区域吗?
代码没有问题。简单的输入绑定代码是这样的:
<UserControl.InputBindings>
<KeyBinding Key="A" Command="{Binding AddDashBoardCommand}">
</KeyBinding>
</UserControl.InputBindings>
是否因为我在不同地区m
n
按下快捷键m
而需要其他地区作出回应?解决方案是什么?
答案 0 :(得分:2)
根据我的理解,它可能与关注特定地区有关。无论如何,一个可行的解决方案是使用 Windows的InputBindings ,而不是在指定的上定义 ShortKey 的地区即可。
这样,只要您专注于窗口应用程序,Input Binding
就会采取行动,而无需打开New
菜单。但是,您需要考虑 命令绑定 会在 Shell的ViewModel 上产生。
因此,如果您需要将操作委托给特定的 ViewModel ,则可以 发布() Event
通过 EventAggregator ,其类型取决于用户所做的操作( NewWindowEvent , CopyEvent , SaveEvent , ...)。因此,每个相应的 ViewModel 会依赖于特定的 事件/ ,它只会知道如何处理它。
您可以使用带有或不带 修饰符 属性的InputBindings
。
问候。
答案 1 :(得分:1)
请尝试使用如下:
<UserControl.InputBindings>
<KeyBinding Key="A" Modifiers="Control" Command="{Binding AddDashBoardCommand}">
</KeyBinding>
</UserControl.InputBindings>
因此,使用上面的(添加的修饰符属性):快捷键 Ctrl + A 应该适用于Add Dashboard
命令。
顺便说一下,我建议将更改添加仪表板快捷方式改为 Ctrl + D ,因为 Ctrl + A 已用于选择所有文字