2016-03-05 108 views
0

我正在构建一个使用MVVM Light的小型WPF应用程序,这是我使用此框架的第一个应用程序。将viewmodel中的命令绑定到menuitem和快捷键

我有一些命令在我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

将InputBinding添加到窗口的InputBindings。

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); 
} 
相关问题