绑定Keybinding的Key属性

本文关键字:属性 Key Keybinding 绑定 | 更新日期: 2023-09-27 18:13:28

这个问题给出了一个在XAML中将窗口级别的键绑定到ViewModel命令的干净方法。这非常棒,但是它不允许对所使用的密钥进行定制。是否有可能将"键"值绑定到视图模型,如果是,什么类型的值是一个"键"在夏普?

<Window.InputBindings>
<KeyBinding Key="{Binding RefreshKey}"
            Command="{Binding RefreshCommand}" />

或者可以在代码中添加窗口级别的键绑定吗?同样的问题有一个解决方案,把它放在代码后面,但我宁愿保持代码在ViewModel中,如果可能的话。

绑定Keybinding的Key属性

http://msdn.microsoft.com/en-us/library/system.windows.input.keygesture.aspx

对于KeyGesture的XAML用法,通常在XAML中设置的属性是手势,在手势同时代表一个标准键的情况下和一个修饰键

…注意,XAML的用法不直接声明元素。对象元素的使用是不可能的,因为KeyGesture不公开公共默认构造函数。相反,使用XAML使用类型转换器行为来声明一个完整的内联KeyGesture

我认为你可以返回一个KeyGesture对象来绑定Key属性或者你也可以返回一个组合字符串它会自动转换为

属性类型是枚举Key,因此从视图模型公开它并绑定到它应该足够简单。但是,正如您链接到的问题中所指出的,直到WPF 4才添加了对KeyBinding中绑定的支持。

编辑:我没有意识到你在要求一种方法来调用一个命令作为多个按键的结果。请参阅我的博客文章在这里讨论我如何解决这个问题。您可能需要为WPF 4调整它