无法实现KeyBindings

时间:2009-08-17 21:50:21

标签: c# wpf key-bindings

我想在我的应用程序中处理热键。编写一个键绑定需要一个命令,这很好,但我不清楚实现该命令所需的最小工作量是多少。我似乎发现的所有示例都是过度设计,不清楚或假设我使用的MVVM模式我不是。

那么使键绑定工作的基础是什么?

谢谢!

2 个答案:

答案 0 :(得分:3)

实现命令所需的最小工作量只是实现ICommand的类。 RoutedCommand是一个简单的实现,提供基本功能。

设置完该命令后,KeyBinding非常简单。您只需为该密钥提供Key和可选Modifiers即可。 .NET中包含了许多常用命令。例如,您可以使用此标记将“复制”命令绑定到Ctrl + C:

<Window.InputBindings>
    <KeyBinding Command="ApplicationCommands.Copy" Key="C" Modifiers="Ctrl"/>
</Window.InputBindings>

您可以查看ApplicationCommandsComponentCommandsNavigationCommands以了解其他一些内置命令。

答案 1 :(得分:1)

制作一个我知道的Keybinding的最简单方法是做这样的事情

在XAML中

  <Window.CommandBindings>
    <CommandBinding Command="MyCommand" 
       CanExecute="MyCommandCanExecute"
       Executed="MyCommandExecuted" />
  </Window.CommandBindings>
  <Window.InputBindings>
    <KeyBinding Command="MyCommand" Key="M" Modifiers="Ctrl"/>
  </Window.InputBindings>

中的代码

private void MyCommandCanExecute(object sender, CanExecuteRoutedEventArgs e)
{
  e.CanExecute = true;
  e.Handled = true;
}

private void MyCommandExecuted(object sender, ExecutedRoutedEventArgs e)
{
  MessageBox.Show("Executed!");
  e.Handled = true;
}

在我看来这很可读,但如果您有任何问题请发表评论!