将视图模型中的命令绑定到菜单项和快捷键
本文关键字:菜单项 快捷键 绑定 命令 视图 模型 | 更新日期: 2023-09-27 18:37:24
我正在使用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 表示打开命令等?
将 InputBinding 添加到 Window 的 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);
}