WPF中的自定义热键

Posted

技术标签:

【中文标题】WPF中的自定义热键【英文标题】:Custom hotkey in WPF 【发布时间】:2020-10-12 03:36:12 【问题描述】:

我在我的 WPF 应用程序中实现了一些热键。

XAML:

    <KeyBinding
        Command="Binding SomeCommand"
        Modifiers="Control"
        Key="K"/>

现在我想要一个可以设置自定义热键的功能,以便用户可以通过按钮或类似方式单独设置键。

有谁知道如何在 wpf 中做到这一点?

【问题讨论】:

见Programmatically create a key binding for textbox input 【参考方案1】:

您需要使用视图模型将 Key 与属性绑定

//ViewModel
string SomeCommnadShortcut get; set 

<!-- xaml -->
    <KeyBinding
            Command="Binding SomeCommand"
            Modifiers="Control"
            Key=Binding SomeCommnadShortcut/>

然后编写验证字符串的逻辑,更改这些属性并发送更新事件。

【讨论】:

【参考方案2】:

尝试在 ViewModel 中绑定 Key

<KeyBinding Command="Binding SomeCommand" Modifiers="Control" Key="Binding SomeHotKey"/>

然后在你的 ViewModel.cs 中:

private Key _SomeHotKey = System.Windows.Input.Key.K;  //Default Hotkey
public Key SomeHotKey

 get return _SomeHotKey; 
 set _SomeHotKey = value; 

现在,您可以使用 SomeHotKey 属性自定义热键。

【讨论】:

以上是关于WPF中的自定义热键的主要内容,如果未能解决你的问题,请参考以下文章

wpf应用程序中的自定义组合框

WPF中的自定义控件实例

WPF中的自定义模型绑定[重复]

WPF DataGrid 中的自定义复选框不更新绑定

在 wpf 中的自定义样式上,文本框的文本始终为空

wpf 自定义控件的自定义属性的数据绑定问题