使用键盘快捷键触发Silverlight Prism命令

时间:2010-07-28 13:56:55

标签: c# silverlight mvvm command hotkeys

有人知道是否可以用快捷方式触发prism命令吗?我的意思是我希望能够以声明方式定义命令与键盘快捷键的绑定,如ClientUI所做的那样:

ClientUI key bindings

是否有用于此目的的开源库?或者可能是代码样本?

我找到了this question,但我不认为它会回答我的。

2 个答案:

答案 0 :(得分:3)

我已经创建了这样的手势触发器。我想和你们分享一下。基本上,它是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

答案 1 :(得分:1)

您可以编写一个附加行为,该行为具有侦听KeyUp事件,然后调用Command。复杂性来自于翻译Gesture =“Ctrl + Shift + A”之类的东西。您需要编写一个解析器来确切地确定string表示的组合键。