菜单的短按键不能在棱镜中使用wpf

时间:2014-05-16 06:37:18

标签: c# wpf prism

我的应用程序是使用C#(WPF和Prism)开发的。它有4个项目,每个项目有不同的区域:

  1. 菜单区域包含菜单视图
  2. 绘图区域包含图纸
  3. 树区域包含树视图
  4. 状态区域包含satus视图
  5. 我完成了菜单快捷键的绑定,它工作正常但是我需要先选择一个菜单标题,例如,如果我想在 CTRL + N 上打开新的dashBoard窗口需要在菜单栏上选择New菜单。如果您查看其他应用程序,如Word,记事本等,如果按 CTR + N ,它会打开新文件,您无需进入新菜单。

    这是由于棱镜的不同区域吗?

    代码没有问题。简单的输入绑定代码是这样的:

        <UserControl.InputBindings>
            <KeyBinding Key="A"  Command="{Binding AddDashBoardCommand}">   
            </KeyBinding>
        </UserControl.InputBindings>    
    

    是否因为我在不同地区m n按下快捷键m而需要其他地区作出回应?解决方案是什么?

2 个答案:

答案 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 已用于选择所有文字