WPF KeyBinding Key 可以有几个替代值吗?

Posted

技术标签:

【中文标题】WPF KeyBinding Key 可以有几个替代值吗?【英文标题】:Can WPF KeyBinding Key have several alternative values? 【发布时间】:2010-11-09 17:52:31 【问题描述】:

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

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

Key="D1 && NumPad1"

所以按下 D1NumPad1 会执行命令?

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

【问题讨论】:

【参考方案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】:

不,你不能那样做。

【讨论】:

我不喜欢这个答案——但我能做什么,我只是一个程序员。 :) 是的,你可以 :) ___________

以上是关于WPF KeyBinding Key 可以有几个替代值吗?的主要内容,如果未能解决你的问题,请参考以下文章

Wpf UserControl使用 KeyBinding,失效问题

WPF 和.NET的关系 我想知道WPF有几个版本 他们对应的Framework又是哪个版本 单独.NET 4.0可以做WPF吗

sublime 3 keybinding default 无法修改么

如何定义emacs keybinding'C-c C-c'?

小程序一个项目可以有几个缓存,有规定吗,缓存到了那里?

在WPF中快速实现键盘钩子