WPF MVVM中的键盘快捷键?

WPF MVVM中的键盘快捷键?,wpf,mvvm,keyboard-shortcuts,Wpf,Mvvm,Keyboard Shortcuts,我有一个遵循MVVM模式的WPF应用程序。我需要实现键盘快捷键。这些快捷方式必须控制WebBrowser控制行为。我定义了第一个自定义命令并将其添加到视图的inputbindings中。将有更多的命令,它们必须在浏览器上调用脚本: MainWindow.xaml.cs: 。。。 CommandBinding cb=新CommandBinding(RemoteControlCommands.TestCommand、MyCommandExecuted、MyCommandCanExecute); th

我有一个遵循MVVM模式的WPF应用程序。我需要实现键盘快捷键。这些快捷方式必须控制WebBrowser控制行为。我定义了第一个自定义命令并将其添加到视图的inputbindings中。将有更多的命令,它们必须在浏览器上调用脚本:

MainWindow.xaml.cs:

。。。
CommandBinding cb=新CommandBinding(RemoteControlCommands.TestCommand、MyCommandExecuted、MyCommandCanExecute);
this.CommandBindings.Add(cb);
按键手势kg=新按键手势(Key.Q,ModifierKeys.Control);
InputBinding ib=新的InputBinding(RemoteControlCommands.TestCommand,kg);
this.InputBindings.Add(ib);
}
私有void MyCommandExecuted(对象发送方,已执行路由目标)
{
调用脚本(“foo”,“你好,世界!”);
}
私有void MyCommand和CanExecute(对象发送方,CanExecuteRoutedEventArgs e)
{
e、 CanExecute=true;
}
我的问题是如何将其融入MVVM模式?MVVM对我来说是一个新概念,但我了解如何将view的命令绑定到view模型,并执行方法或更改属性。 但是,在这种情况下,我需要在视图中的控件上执行一个方法。在这种情况下,处理快捷方式的最佳位置是什么?


<Window.InputBindings>
  <KeyBinding Command="{Binding MyCommand, Source=viewModel...}"
              CommandParameter="{Binding,ElementName=browserControl,Mode=Self}"
              Gesture="CTRL+R" />
</Window.InputBindings>

您可以将命令属性绑定到查看模型的命令。

然后?视图模型不知道webbrowser控件,因为我想调用方法onYou可以将命令参数绑定到某个值,如webbrowser本身,并在委托方法中检索它。请注意,Akash Kava的答案仅在.NET 4.0上有效,因为
KeyBinding.Command
KeyBinding.CommandParameter
在.NET 3.5中不是依赖属性。另一个需要注意的警告;如果在绑定命令中包含卫士,则当卫士的计算结果为false时,Caliburn将禁用整个视图。我通过为键盘快捷键和调用同一命令的任何相关控件(如菜单项)设置具有不同名称的操作“重载”来解决这个问题