C# 不带修饰符的键绑定(在UserControl中)

C# 不带修饰符的键绑定(在UserControl中),c#,wpf,C#,Wpf,我想在按键时执行一个命令(不带修改器)。因此,我尝试了以下代码: <UserControl.InputBindings> <KeyBinding Key="A" Command="{Binding ACommand}" /> </UserControl.InputBindings> 但是,KeyBinding支持的不是键,而是键和修饰符 现在我考虑使用行为和对待按键事件。但这太复杂了 有人知道更简单的解决办法吗 添加: 上述代码在窗口中运行良好

我想在按键时执行一个命令(不带修改器)。因此,我尝试了以下代码:

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

但是,KeyBinding支持的不是键,而是键和修饰符

现在我考虑使用行为和对待按键事件。但这太复杂了

有人知道更简单的解决办法吗

添加: 上述代码在窗口中运行良好


我在UserControl中找到了解决方案。(使用.NET Framework 4)

我不太明白您的问题是什么。您编写的代码应该可以运行,不需要指定修饰符


我想问题可能是您的绑定或设置键绑定的控件无法聚焦,因此无法触发。

Microsoft不支持绑定到您在文本框中键入时可能按下的普通键,除非它有修改器。可以绑定到功能键(如F1)和其他一些键,而无需修改器。 见:


我曾在一个博客上看到,他通过继承InputSignature并实现Matches函数来创建自己的KeySignature类,从而绕过了这个问题

我找到了一种方法,通过只使用一个键(如“Key.a”)来设置InputBinding


这对我来说很好。

谢谢,但该代码仅在功能键中有效。我想将命令绑定到普通键,例如“A”或“R”……这不是真的,它适用于所有键。我也曾多次将其用于普通键。如果您不相信可以通过设置
Modifiers=“None”
来尝试“正确”方法。Modifiers=“None”不能转换为有效的修饰符。根据MSDN,“一个有效的按键手势必须包含一个按键和一个或多个ModifierKeys”。()我知道,但那是指按键手势,即在自己的作品中设置
Key=“A”
将无效。
boolean noMod = ModifierKeys == ModifierKeys.None;
KeyBinding inputBinding = new KeyBinding(this, Keys, noMod ? ModifierKeys.Alt : ModifierKeys));
if (noMod)
{
    inputBinding.ClearValue(KeyBinding.ModifiersProperty);
}