WPF:如何使用命令和输入绑定

命令和输入绑定在WPF中似乎非常复杂 – 将特定命令绑定到某些输入似乎并不总是有效。 我该怎么做呢?

– 自己回答 –

我用自己的发现更新了个人答案,考虑到我花了多长时间才找到信息,理解并实际实现这些复杂的事情。

WPF中的绑定似乎是一个不友好的概念,特别是如果你没有经验。 希望这会让人们的生活更轻松。

首先,在xaml文件的顶部添加应用程序命名空间,该文件将使用绑定:ex。

xmlns:main="clr-namespace:MyApplication"

接下来,在主窗口类之外添加一个自定义静态类来包含命令:ex。

 public static class Command { public static RoutedCommand GSToggleCmd = new RoutedCommand(); public static RoutedCommand ScreenZoomCmd = new RoutedCommand(); } 

我的主要窗口类恰好是’MainWindow’; 我在它下面定义了Command类。

最后,在xaml文件中添加命令绑定

     

Command=""指的是您将绑定到的RoutedCommand 。 我将命名空间命名为main ,因此语法为main:Command.nameofcommand

Executed=""是指触发命令时调用的函数。

Executedfunction示例:

 private void ApplyScreenFitCmd( object sender, ExecutedRoutedEventArgs args ) { string proportionStr = args.Parameter as string; } 

就是这样。 在WPF使用CommandBindings简约方法。

要添加命令,只需RoutedCommand Command类中的新静态RoutedCommand ,并在Window.CommandBindings下的xaml文件中添加CommandBinding

注意:

Visual Studio的Xaml编辑器可能会首先抱怨某些命令无法找到。 构建项目将解决问题。

更多信息

您还可以通过InputBindings触发CommandBindings 。 (关键触发器)

示例(放在将使用它们的Xaml文件中):

       

所以它基本上是Key触发KeyBinding ,它反过来触发指定命令的CommandBinding ,触发相应的调用函数。

与上面的示例一样,您还可以定义CommandParameter以将参数发送到最终调用的函数。 关于这一点的好处是,像上面一样,你可以通过在不同的CommandParameters使用来重用相同的CommandBinding

您还可以通过Buttons,MenuItems等触发CommandBindings

例:

  

这与InputBindings语法相同。

我花了一段时间才采用简约,统一的方式在WPF中使用绑定。 我希望这篇文章可以防止这个概念容易引起的所有斗争。