我希望从与F8关联的视图模型中获取命令,并且对输入手势知之甚少。我必须将它包装在路由命令中,还是有其他推荐的方法来执行此操作?
干杯,
Berryl
更新
我原来的帖子确实有两个痛点。第一个是在WPF 4之前,您无法将命令直接绑定到输入手势或计算命令的DataContext的可视继承,并且必须通过CommandManager层。这似乎是NVM指出MVVM Toolkit的CommandReference有用的原因,但是现在使用WPF 4这是固定的,因为Command是InputBinding上的附加DP,所以你需要做的就是:
<DataGrid.InputBindings>
<KeyBinding Command="{Binding MyViewModel.MyCommand}" Key="F8" />
</DataGrid.InputBindings>
要实现的第二个痛点是将输入手势绑定到命令与将该手势的文本表示与菜单项相关联不同。所以我需要做一些事情:
<MenuItem Header="{x:Static s:Strings.MyHeaderString}" Command="{Binding MyViewModel.MyCommand}"
InputGestureText="F8"/>
我拼写这个,希望有人会告诉我,我有错误(或正确)。假设这是你能做的最好的,那么你可以得到多少干燥以及如何做到这一点,同时严格保持ViewModel中的视觉元素。您可以通过在Command上使用某些属性(即KeyGesture,KeyModifier)或在我认为的资源文件中使用“F8”来执行此操作,具体取决于您需要多少重用某些内容和您的观点。还有关于命令的输入手势数量!
答案 0 :(得分:3)
How do I associate a keypress with a DelegateCommand in Composite WPF?
这是你的答案。而不是Key =“X”你应该使用Gesture =“F8”