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