首页 > 解决方案 > 用户编程键绑定

问题描述

请注意,这是对我之前的问题的跟进。

我已经实现了一个包含键绑定的类以及一个允许用户更改键绑定的“表单”。这行得通 - 键绑定得到更新并努力实现适当的命令。但是,它非常繁琐,而且似乎效率低下。基本上,我为Key's 和Modifier's 创建了一个属性:

private Key _changeBackgroundKey;
/// <summary>
/// Key to change the color of the background
/// </summary>
public Key ChangeBackgroundKey
{
    get { return _changeBackgroundKey; }
    set
    {
        if (_changeBackgroundKey == value)
            return;

        _changeBackgroundKey = value;
        OnPropertyChange(nameof(ChangeBackgroundKey));
    }
}

private ModifierKeys _changeBackgroundModifier;
/// <summary>
/// Key modifier to change the color of the background
/// </summary>
public ModifierKeys ChangeBackgroundModifier
{
    get { return _changeBackgroundModifier; }
    set
    {
        if (_changeBackgroundModifier == value)
            return;

        _changeBackgroundModifier = value;
        OnPropertyChange(nameof(ChangeBackgroundModifier));
    }
}

在哪里OnPropertyChange实现INotifyPropertyChanged

XAML 已绑定:

<KeyBinding Key="{Binding ChangeBackgroundKey}" Modifiers="{Binding ChangeBackgroundModifier}" Command="{Binding Settings.ChangeBackgroundColorCommand}"/>

这是针对我要实现的每个Key键绑定完成的——我必须为和创建一个属性ModifierKeys,在 XAML 中绑定它们,并相应地更新逻辑。有没有更好/更有效的方法来做到这一点?虽然,我的虚拟项目只使用了四个键绑定,但我的真实应用程序使用了更多。

标签: c#wpfkey-bindings

解决方案


推荐阅读