我想从视图模型中得到一个与f8相关联的命令,并且对输入手势不太了解。我必须用一个路由命令包装它,还是有其他推荐的方法?
干杯,
贝里尔
更新
我原来的帖子真的有两个痛点。第一个问题是,在WPF 4之前,您无法将命令直接绑定到输入手势或依赖于命令的DataContext的可视继承,因此必须通过一个CommandManager层。这似乎是NVM指出的MVVM工具包的commandreference有用的原因,但现在对于WPF 4,这是固定的,因为命令是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"/>
我拼出来是希望有人能告诉我我出了什么错(或是对)。假设这是你能做的最好的,那么它取决于你能得到多少干燥,以及如何做到这一点,同时保持严格的视觉元素远离你的模型。您可以通过在命令上使用一些属性(例如,keygesture、keymodifier)或在资源文件中使用“f8”来实现这一点,这取决于您需要多少重用某些内容和您的视角。还有多少输入手势你有命令!