我有一个应用程序,其中有UserControl
,其中包含工具栏。此工具栏有一个按钮Execute
,该按钮又将其命令绑定到视图模型作为属性公开的ICommand
派生类。
<Button Grid.Row="0" Command="{Binding ExecuteCommand}">Execute</Button>
现在,我想将它绑定到键盘快捷键(F5
)。这需要绑定在UserControl
的上下文中,因为它仅在此用户控件此时可见时才适用。
另一种选择是将它绑定到实际包含要执行的文本的文本框的KeyDown
,但是当谈到如何将事件从控件路由到命令时,我真的很不稳定。 viewmodel在usercontrol的代码隐藏中没有真正丑陋的黑客。
任何指针都表示赞赏!
答案 0 :(得分:25)
还有另一个答案因某种原因消失了。这很好用:
<UserControl.InputBindings>
<KeyBinding Key="F5" Command="{Binding ExecuteCommand}" />
</UserControl.InputBindings>
如果可能的话,我想赞扬那个人。请再次出现:)
答案 1 :(得分:2)
Afaik,没有办法直接绑定到按键,但有一些解决方法。看起来其他人也有这个问题,你见过this post吗?我的另一个建议是研究attached commands。