【问题标题】:Can WPF KeyBinding Key have several alternative values?WPF KeyBinding Key 可以有几个替代值吗?
【发布时间】:2014-11-28 06:20:58
【问题描述】:

我有一个KeyBinding,其中Key 设置为D1,即1 键。这与 NumPad1 键不同。

有没有办法得到类似的东西:

Key="D1 && NumPad1"

所以按下 D1NumPad1 将执行命令?

我为每个键 D1 和 NumPad1 添加了第二个 KeyBinding,但这似乎应该有更好的方法。

【问题讨论】:

    标签: wpf


    【解决方案1】:

    是的,你可以 - 逗号分隔 :-)

    我不确定在问题中是否要使用两个 KeyBindings 来表示用户必须按两次键。但这就是我一直在寻找的。如果是这个原因,那么这篇文章就可以了。

    例如,我想在我的应用程序中使用 + 前进,++ 来双前进,- 后退,- 来双退:

    <KeyBinding Key="OemMinus"  Modifiers="Control" Command="{Binding GoBack}"/>
    <KeyBinding Key="OemMinus,OemMinus" Modifiers="Control" Command="{Binding GoBack2X}"/>
    

    我想出来的原因是,我知道在 VisualStudio 中您有大量具有双键的命令,例如注释或折叠区域。你知道VS2010是用WPF写的。所以我查看了 VS 菜单,有很多命令用逗号分隔: 查看 > 解决方案导航器 Cntr + W, F。 我试过了,效果很好!

    【讨论】:

    • 知道如何在代码隐藏而不是 XAML 中执行此操作吗?
    • 我试过这个,但发生的只是我的 GoBack 被调用了两次,我错过了什么吗?
    • 这不起作用,在 Visual Studio 中 Ctrl+W, F 等效于 Ctrl+W , Ctrl+F ,其中答案中提供的代码将简单地将逗号分隔的最后一个值设置为实际的捷径。例如,如果上面的代码定义了 Key="K,OemPlus" ,那么该快捷方式就等同于 Key="OemPlus" ,原因是 Key 是一个只接受单个值的枚举。
    【解决方案2】:

    不,你不能那样做。

    【讨论】:

    • 我不喜欢这个答案——但我能做什么,我只是一个程序员。 :)
    • 是的,你可以 :) ___________
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-06-03
    • 2016-05-04
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多