绑定密钥绑定的关键属性

时间:2011-11-01 20:42:40

标签: c# wpf key-bindings

This question提供了一种干净的方法,用于将窗口级别的键绑定到XAML中的ViewModel命令。这非常棒,但它不允许自定义所使用的密钥。是否可以将“key”值绑定到viewmodel,如果是,csharp中的“key”是什么类型的值?

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

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

2 个答案:

答案 0 :(得分:1)

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

  

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

     

...   请注意,XAML用法不直接声明a   元件。由于KeyGesture,因此无法使用该对象元素   不公开公共默认构造函数。相反,XAML的用法   使用typeconverter行为来声明整个KeyGesture内联   作为Gesture属性值。

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

答案 1 :(得分:0)

属性类型是枚举Key,因此它应该足够简单,可以从视图模型中公开它并绑定到它。但是,正如您所链接的问题所述,在{4}之前未添加对KeyBinding中绑定的支持。

编辑:没有意识到你要求一种方法来调用多次击键的命令。请参阅我的博文here,讨论我是如何解决这个问题的。您可能需要针对WPF 4进行调整。