2011-11-01 124 views
2

This question给出了一个干净的方法,用于将窗口级别的键绑定到XAML中的ViewModel命令。这非常棒,但它不允许定制正在使用的密钥。是否有可能将“key”值绑定到视图模型,如果是,哪种类型的值是csharp中的“key”?绑定键绑定的键属性

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

或者是有可能在代码中添加窗口级别键绑定?同样的问题有把它放在代码隐藏的解决方案,但如果可能的话,我宁愿将代码保存在ViewModel中。

回答

1

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

对于KeyGesture XAML用法,即一般设置在XAML 属性是手势,在情况下,手势代表一个标准键 和修饰键

... 请注意,XAML用法不直接声明 元素。该对象元素的使用是不可能的,因为KeyGesture 不公开公共默认构造函数。相反,XAML使用 使用typeconverter行为来声明整个KeyGesture内联 作为手势属性值。

我想你可以返回一个KeyGesture对象绑定一个关键属性,或者您可以随时返回一个字符串组成,它会自动转换

+0

KeyGesture,完美!谢谢 – Tyrsius

0

属性类型是enumeration Key,所以它应该足够简单,以便将它从视图模型中公开并绑定到它。但是,正如您所链接到的问题所述,支持绑定KeyBinding直到WPF 4才被添加。

编辑:没有意识到你要求的方式来调用一个命令作为多个击键的结果。请参阅我的博客文章here讨论我如何解决这个问题。您可能需要修改它以适应WPF 4

+0

我不知道你将如何使用返回多个关键那种类型。像CTRL + R这样的东西在单个值中是不可能的。 – Tyrsius

+0

对不起,误解了你的问题。编辑我的帖子。 –

+0

我想你还是误解了。我不是要求多个击键,而是修改键。就Windows而言,Ctrl + R是一个关键。 – Tyrsius