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

7

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

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

现在,我想将其绑定到一个键盘快捷键(F5)。这需要在UserControl的上下文中绑定,因为它只适用于此用户控件当前可见的情况。
另一个选择是将其绑定到实际包含要执行的文本的文本框的KeyDown,但是当涉及到如何将事件从控件路由到视图模型中的命令时,我确实摸不着头脑,而不会在用户控件的代码后台中进行非常丑陋的hack操作。
欢迎任何指导!

可能是在WPF中使用键盘快捷键的重复问题。 - Daniel Hilgarth
1
这个问题与之前的问题有些相似,但并不完全一样。之前的问题是关于如何绑定标准命令,而这个问题是将自定义命令绑定到视图模型中的属性上。解决方案虽然相似,但仍然是两件不同的事情。 - Dervall
@DanielHilgarth:是的,我不认为这是重复的问题,或者至少其他问题中提供的解决方案很差(它是WinForms解决MVVM问题的方法)。 - user7116
@sixlettervariables:我在问题或答案中没有看到任何winforms。 - Daniel Hilgarth
@DanielHilgarth:我所指的WinForms是形容词,意思是WPF/MVVM中低质量不太有用 - user7116
2个回答

25

还有另一个答案,不知何故消失了。这个很好用:

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

如果可能的话,我想要给那个人以荣誉。请再现身吧 :)


2
据我所知,没有一种直接绑定键盘按键的方法,但有一些解决方法。看起来其他人也遇到了这个问题,你看过这篇文章吗?我的另一个建议是研究附加命令

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接