将键盘快捷键绑定到WPF中视图模型中的命令

时间:2012-04-18 12:18:32

标签: c# wpf mvvm

我有一个应用程序,其中有UserControl,其中包含工具栏。此工具栏有一个按钮Execute,该按钮又将其命令绑定到视图模型作为属性公开的ICommand派生类。

<Button Grid.Row="0" Command="{Binding ExecuteCommand}">Execute</Button>

现在,我想将它绑定到键盘快捷键(F5)。这需要绑定在UserControl的上下文中,因为它仅在此用户控件此时可见时才适用。

另一种选择是将它绑定到实际包含要执行的文本的文本框的KeyDown,但是当谈到如何将事件从控件路由到命令时,我真的很不稳定。 viewmodel在usercontrol的代码隐藏中没有真正丑陋的黑客。

任何指针都表示赞赏!

2 个答案:

答案 0 :(得分:25)

还有另一个答案因某种原因消失了。这很好用:

<UserControl.InputBindings>
  <KeyBinding Key="F5" Command="{Binding ExecuteCommand}" />
</UserControl.InputBindings>

如果可能的话,我想赞扬那个人。请再次出现:)

答案 1 :(得分:2)

Afaik,没有办法直接绑定到按键,但有一些解决方法。看起来其他人也有这个问题,你见过this post吗?我的另一个建议是研究attached commands