【发布时间】:2011-03-22 04:20:40
【问题描述】:
有人知道是否可以使用快捷方式触发棱镜命令吗?我的意思是我希望能够以声明的方式定义命令与键盘快捷键的绑定,就像ClientUI 所做的那样:
是否有任何用于此目的的开源库?或者代码示例?
我找到了this question,但我认为它没有回答我的问题。
【问题讨论】:
标签: c# silverlight mvvm command hotkeys
有人知道是否可以使用快捷方式触发棱镜命令吗?我的意思是我希望能够以声明的方式定义命令与键盘快捷键的绑定,就像ClientUI 所做的那样:
是否有任何用于此目的的开源库?或者代码示例?
我找到了this question,但我认为它没有回答我的问题。
【问题讨论】:
标签: c# silverlight mvvm command hotkeys
我已经创建了这样的手势触发器。我想和你们分享。基本上,它是System.Windows.Interactivity 触发器,它可以解析表示为字符串的手势。用法和在 ClientUI 中一样简单:
<UserControl>
<i:Interaction.Triggers>
<behaviors:KeystrokeCommandTrigger Command="{Binding SaveChangesCommand}" Gesture="Ctrl+Shift+S" />
<behaviors:KeystrokeCommandTrigger Command="{Binding RejectChangesCommand}" Gesture="Ctrl+Shift+R" />
<behaviors:KeystrokeCommandTrigger Command="{Binding NewItemCommand}" Gesture="Ins" />
<behaviors:KeystrokeCommandTrigger Command="{Binding DeleteSelectedItemCommand}" Gesture="Del" />
<behaviors:KeystrokeCommandTrigger Command="{Binding UploadSomethingCommand}" Gesture="Ctrl+Shift+U" />
</i:Interaction.Triggers>
</UserControl>
代码在pastie。
【讨论】:
您可以编写一个附加行为,该行为具有侦听 KeyUp 事件,然后调用命令。复杂之处在于翻译 Gesture="Ctrl+Shift+A" 之类的内容。您需要编写一个解析器来准确确定string 代表的组合键。
【讨论】: