C# 绑定Keybinding的Key属性

C# 绑定Keybinding的Key属性,c#,wpf,key-bindings,C#,Wpf,Key Bindings,提供一种干净的方法,用于将窗口级别的键绑定到XAML中的ViewModel命令。这是非常棒的,但是它不允许自定义正在使用的密钥。是否可以将“键”值绑定到viewmodel,如果可以,csharp中的“键”是什么类型的值 <Window.InputBindings> <KeyBinding Key="{Binding RefreshKey}" Command="{Binding RefreshCommand}" /> 或者可以在代码中添加窗口

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

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


或者可以在代码中添加窗口级别的键绑定吗?同样的问题也有一个解决方案,可以将其放在代码中,但如果可能的话,我更愿意将代码保存在ViewModel中。

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

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

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

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


我认为您可以返回一个keypostate对象来绑定一个Key属性,或者您可以始终返回一个组合字符串,它将被自动转换

我不知道如何使用该类型返回多个Key。像CTRL+R这样的东西在单个值中是不可能的。对不起,误解了您的问题。编辑了我的帖子。我想你还是误解了。我不是要求多次击键,而是修改过的键。就windows而言,Ctrl+R是一个键。按键手势,完美!非常感谢。