听起来您正在寻找一种处理 KeyUp/KeyPress/KeyDown 事件的“无代码”MVVMish 方式。
选项#1:棱镜。
您已经提到它仅随Click 命令一起提供。但是,您可以添加自己附加的 DP 以启用您想要的任何事件的命令(如 KeyUp/KeyDown/KeyPress)。
如果您正在寻找有关 Corey 的示例,则该示例适用于 ToggleButton.Checked/Unchecked 事件。
http://www.85turns.com/2009/06/24/togglebutton-command-for-prism/
<ToggleButton x:Name="ToggleButton1"
customCommands:Checked.Command="{Binding CheckedCommand}"
customCommands:UnChecked.Command="{Binding UnCheckedCommand}"
Margin="8,8,0,8" Content="Check me"
/>
此外,Erik Mork 有一个出色的视频,可以很好地概述命令以及如何创建自定义命令附加 DP。
http://development-guides.silverbaylabs.org/Video/Prism-Commands
选项#2:混合触发器
Expression Blend SDK 附带了触发器和行为,这些触发器和行为可以针对您尝试执行的操作。
Blend 示例codeplex 项目附带一个您可以使用的 EventTrigger:
<i:EventTrigger EventName="Click">
<si:InvokeDataCommand Command="{Binding ShoppingCart.CheckOutCommand}"/>
</i:EventTrigger>
或者,您可以为击键事件创建自己的自定义触发器,并在那里做任何您想做的事情。这是一个示例:
http ://azurecoding.net/blogs/brownie/archive/2009/04/06/blend-behaviors-ftw.aspx