MVVM中的Silverlight热键命令?

Ran*_*ngy 8 c# silverlight prism hotkeys mvvm

我正在尝试基于Silverlight中的击键来触发命令.据我了解,您无法在Silverlight中使用AccessKey或AcceleratorKey.它看起来可能是有用的附加属性InputBindings也不起作用.

我开始在其他地方寻找.看起来Prism是让Silverlight中的命令工作的方式,所以我检查了一下.但是它们只有一个Click处理程序,它甚至不是设置关键命令的有用起点.

我只是错过了Prism的某些部分吗?或者有一个很好的标准方法来处理MVVM Silverlight的热键?

Jus*_*gel 9

听起来你正在寻找处理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"
        />
Run Code Online (Sandbox Code Playgroud)

此外,Erik Mork还有一个出色的视频,可以很好地概述命令以及如何创建自定义命令Attached 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>
Run Code Online (Sandbox Code Playgroud)

或者,您可以为关键笔划事件创建自己的自定义触发器,并根据您的喜好进行操作.以下是一个示例:http:
//azurecoding.net/blogs/brownie/archive/2009/04/06/blend-behaviors-ftw.aspx