我正在使用MVVM Light构建一个小型WPF应用程序,这是我使用此框架的第一个应用程序。
我的MainViewModel
中有很多命令:
public RelayCommand NewCommand { get; private set; }
public RelayCommand OpenCommand { get; private set; }
// etc.
public MainViewModel() {
NewCommand = new RelayCommand( CreateNewFile, CanCreateNewFile );
OpenCommand = new RelayCommand( OpenFile, CanOpenFile);
// etc.
}
在我的XAML中,我有一个菜单:
<DocPanel>
<Menu Name="MainMenu">
<MenuItem Header="File">
<MenuItem Header="New" Command="{Binding NewCommand}" />
<MenuItem Header="Open" Command="{Binding OpenCommand}" />
<!-- etc. -->
</MenuItem>
<Menu>
</DocPanel>
一切都很好。但是如何将这些命令绑定到常用的键盘快捷键,例如新命令的Ctrl-N和打开命令的Ctrl-O等?
答案 0 :(得分:0)
向Window的InputBindings添加一个InputBinding。
private MainViewModel m_ViewModel = new MainViewModel();
public MainWindow()
{
InitializeComponent();
this.DataContext = m_ViewModel;
var keyGesture = new KeyGesture(Key.N, ModifierKeys.Control);
var keyBinding = new KeyBinding(m_ViewModel.NewCommand, keyGesture);
this.InputBindings.Add(keyBinding);
}