【问题标题】:short keys for menu not working in wpf in prismprism中wpf中菜单的快捷键不起作用
【发布时间】:2014-05-16 06:37:17
【问题描述】:

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

  1. 菜单区域包含菜单视图
  2. 绘图区域包含绘图
  3. 树区域包含树视图
  4. 状态区域包含状态视图

我完成了菜单快捷键的绑定,它工作正常,但为此我需要先选择一个菜单标题,例如,如果我想首先在 CTRL+N 上打开新的仪表板窗口我需要在菜单栏选择New菜单。如果您查看其他应用程序,如 Word、记事本等。如果您按 CTR+N,它将打开新文件,您无需进入新菜单。

是因为棱镜的区域不同吗?

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

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

是不是因为我在不同区域按下快捷键mnm期待其他区域响应?解决办法是什么?

【问题讨论】:

    标签: c# wpf prism


    【解决方案1】:

    根据我的理解,这可能与对特定区域的关注有关。无论如何,一个可行的解决方案是使用 Windows 的 InputBindings,而不是在指定的地区

    这样,Input Binding 将在您专注于 Window 应用程序 的任何时候执行操作,而无需打开 New 菜单。但是,您需要考虑到 Command Binding 会在 Shell 的 ViewModel 上产生。

    因此,如果您需要将操作委托给特定 ViewModel,您可以通过 Publish() 一个 Event 通过 EventAggregator,其类型取决于用户所做的操作(NewWindowEventCopyEventSaveEvent、.. .)。因此,每个对应的 ViewModel 将订阅特定的 Event/s,它只知道如何处理它。

    您应该能够使用 InputBindings 或不带 Modifiers 属性。

    问候。

    【讨论】:

    • 是的。你的方法绝对正确!!非常感谢它的工作!
    • 很高兴能帮到你。我希望您可以将答案标记为正确,以便遇到同样问题的新来的人知道哪个答案有用。感谢您的投票。
    【解决方案2】:

    请尝试如下使用:

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

    因此,使用上述(添加的修饰符属性):快捷键 Ctrl+A 应该适用于Add Dashboard 命令。

    顺便说一句,我建议更改您将仪表板快捷方式添加到 Ctrl+D,因为 Ctrl+A 已用于选择所有文本.

    【讨论】:

    • 这不是我想要的。绑定很好,但问题在于焦点,因为有多个区域。我希望菜单始终像 Visual Studio 或任何其他应用程序的菜单一样聚焦。所以如果我按 ctr+n 它应该打开新窗口以添加仪表板。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-04-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-11-24
    • 1970-01-01
    相关资源
    最近更新 更多