在WPF中创建一个简单的,未修改的密钥绑定

Rus*_*uss 8 .net wpf keyboard-shortcuts keyboard-events

我正在尝试创建一个非常简单的WPF应用程序.我想在用户按"H"时调用命令处理程序(不是Control-H或Alt-H,只是H).如果我在代码隐藏代码中使用以下代码:

var gesture = new KeyGesture(Key.H, ModifierKeys.None);
var inputBinding = new InputBinding(MyRoutedCommand, gesture);
InputBindings.Add(inputBinding);
Run Code Online (Sandbox Code Playgroud)

我立刻得到一个例外,说KeyGesture不支持键和修饰符组合.

(如果我创建XAML来做类似的事情,我会得到同样的例外).

我的应用程序不接受打字输入,应用程序中没有文本框,因此与文本没有真正的冲突(至少在我看来).我不会想到这会如此不同寻常.

我在其他地方看到的评论表明我可以为此创建一个自定义控件或者在较低级别拦截键盘按键,但这些似乎是很多开销.任何更简单的想法?

H.B*_*.B. 19

不要使用KeyGesture类型或属性(因为一个键不是手势).

例如

KeyBinding b = new KeyBinding()
    {
        Command = MyRoutedCommand,
        Key = Key.H
    };
InputBindings.Add(b);
Run Code Online (Sandbox Code Playgroud)

XAML也是如此

<KeyBinding Command="{Binding MyRoutedCommand}" Key="H" />
Run Code Online (Sandbox Code Playgroud)