【问题标题】:Triggering Silverlight Prism command with a keyboard shortcut使用键盘快捷键触发 Silverlight Prism 命令
【发布时间】:2011-03-22 04:20:40
【问题描述】:

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

是否有任何用于此目的的开源库?或者代码示例?

我找到了this question,但我认为它没有回答我的问题。

【问题讨论】:

    标签: c# silverlight mvvm command hotkeys


    【解决方案1】:

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

    【讨论】:

      【解决方案2】:

      您可以编写一个附加行为,该行为具有侦听 KeyUp 事件,然后调用命令。复杂之处在于翻译 Gesture="Ctrl+Shift+A" 之类的内容。您需要编写一个解析器来准确确定string 代表的组合键。

      【讨论】:

      • 那么,没有现成的开源解决方案?
      • 我找不到。根据您处理 Gesture 参数的方式,编写一个简单的行为不应该太复杂。
      猜你喜欢
      • 2011-06-06
      • 2013-09-25
      • 2017-07-07
      • 2022-01-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多