Программирование пользовательских клавиш - PullRequest
0 голосов
/ 29 августа 2018

Обратите внимание, это продолжение моего предыдущего вопроса .

Я реализовал класс, который содержит привязки клавиш, а также «форму», позволяющую пользователю изменять привязки клавиш. Это работает - привязки клавиш обновляются и работают для реализации соответствующей команды. Однако это очень утомительно и кажется неэффективным. По сути, я создал свойство для Key и Modifier:

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 и соответствующим образом обновить логику. Есть ли лучший / более эффективный способ сделать это? В то время как в моем фиктивном проекте используются только четыре привязки клавиш, мое настоящее приложение использует гораздо больше.

...