c# - 用户编程键绑定
问题描述
请注意,这是对我之前的问题的跟进。
我已经实现了一个包含键绑定的类以及一个允许用户更改键绑定的“表单”。这行得通 - 键绑定得到更新并努力实现适当的命令。但是,它非常繁琐,而且似乎效率低下。基本上,我为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 中绑定它们,并相应地更新逻辑。有没有更好/更有效的方法来做到这一点?虽然,我的虚拟项目只使用了四个键绑定,但我的真实应用程序使用了更多。
解决方案
推荐阅读
- javascript - 手动从菜单而不是 onOpen 运行 Google Apps 脚本
- c - C中的多个孩子和fork()
- python - SSL 错误:使用 psycopg 解密失败或错误记录 mac
- rest - HTTP和Rest有什么关系?
- swift - 如何在单击分段控件之前对视图进行更改?
- delphi-xe3 - Delphi - SQL Server 查询需要很长时间才能运行
- types - 为什么我会因为缺少类型注释而收到错误“特征绑定 FromStr 不满足”?
- django - 子类化基于类的视图时没有httpresponse
- dart - 强制用户显式声明变量
- ruby-on-rails - Rails 6 ActionCable/Redis 生产配置