2016-03-05 125 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); 
} 
相關問題