我想在按下一个键时执行一个命令(没有修饰符)。所以,我尝试了以下代码:
<UserControl.InputBindings>
<KeyBinding Key="A" Command="{Binding ACommand}" />
</UserControl.InputBindings>
但是,KeyBinding不支持键,而是键和修饰符。
现在我考虑使用Behavior并处理KeyDown事件。但这太复杂了。
有人知道更简单的解决方案吗?
添加: 上面的代码在Window 中运行良好。
我在UserControl中找到解决方案。 (使用.NET Framework 4)
答案 0 :(得分:2)
我不太明白你的问题是什么。您编写的代码应该可以使用,不需要指定修饰符。
我认为问题可能是您的绑定或您设置键绑定的控件无法聚焦,因此不会触发。
答案 1 :(得分:2)
Microsoft不支持绑定到在文本框中键入时可能按下的普通键 - 除非它具有修饰符。您可以绑定到功能键(如F1)和其他一些没有修饰符的键。 请参阅:http://msdn.microsoft.com/en-us/library/system.windows.input.keygesture(v=vs.110).aspx
我遇到过一个博客,说他可以通过继承InputGesture并实现Matches函数来创建自己的KeyGesture类来解决这个问题。 http://dikhi.wordpress.com/2008/06/27/keygesture-doesnt-work-with-alpha-numeric-key/
答案 2 :(得分:0)
我想通过只使用一个键来设置一个输入绑定,例如&#34; Key.A&#34;
boolean noMod = ModifierKeys == ModifierKeys.None;
KeyBinding inputBinding = new KeyBinding(this, Keys, noMod ? ModifierKeys.Alt : ModifierKeys));
if (noMod)
{
inputBinding.ClearValue(KeyBinding.ModifiersProperty);
}
这对我很有用。