2010-07-28 86 views

回答

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上。

+0

谢谢,它效果很好! – Jalal 2012-08-22 08:11:51

1

您可以编写一个附加的行为,该行为监听KeyUp事件,然后调用Command。并发症来自翻译Gesture =“Ctrl + Shift + A”之类的东西。您需要编写一个解析器来确定string代表的关键组合。

+0

那么,现有的开源解决方案没有? – 2010-07-29 06:47:52

+0

不是我已经找到。根据处理Gesture参数的方式,编写简单的行为不应太复杂。 – Stephan 2010-07-30 16:43:55