命令和输入绑定似乎在WPF中非常复杂 - 将特定命令绑定到某些输入似乎并不总是有效.我应该怎么做呢?
- 自己回答 -
我用自己的发现更新了个人答案,考虑到我花了多长时间才找到信息,理解并实际实现这些复杂的事情.
WPF中的绑定似乎是一个不友好的概念,特别是如果你没有经验.希望这会让人们的生活更轻松.
dk1*_*123 20
首先,在xaml文件的顶部添加应用程序命名空间,该文件将使用绑定:ex.
xmlns:main="clr-namespace:MyApplication"
接下来,在主窗口类之外添加一个自定义静态类来包含命令:ex.
public static class Command
{
public static RoutedCommand GSToggleCmd = new RoutedCommand();
public static RoutedCommand ScreenZoomCmd = new RoutedCommand();
}
Run Code Online (Sandbox Code Playgroud)
我的主要窗口类恰好是'MainWindow'; 我在它下面定义了Command类.
最后,在xaml文件中添加命令绑定
<Window.CommandBindings>
<CommandBinding Command="main:Command.GSToggleCmd" Executed="GameStateToggleExecuted" />
<CommandBinding Command="main:Command.ScreenZoomCmd" Executed="ApplyScreenFitCmd" />
</Window.CommandBindings>
Run Code Online (Sandbox Code Playgroud)
Command=""是指RoutedCommand你将要约束的.我已命名我的命名空间引用main,因此语法main:Command.nameofcommand
Executed="" 是指触发命令时调用的函数.
Executed功能示例:
private void ApplyScreenFitCmd( object sender, ExecutedRoutedEventArgs args )
{
string proportionStr = args.Parameter as string;
}
Run Code Online (Sandbox Code Playgroud)
就是这样.简约,简单的方法来使用CommandBindings在WPF.
要添加一个命令,只是在夹头一个新的静态RoutedCommand的Command类,并添加CommandBinding下的XAML文件Window.CommandBindings
注意:
Visual Studio的Xaml编辑器可能会首先抱怨某些命令无法找到.构建项目将解决问题.
更多信息:
您也可以CommandBindings通过InputBindings触发.(关键触发器)
示例(放在将使用它们的Xaml文件中):
<Window.InputBindings>
<KeyBinding Key="F5" Command="main:Command.GSToggleCmd" />
<KeyBinding Modifiers="Shift+Alt" Key="Q" Command="main:Command.ScreenZoomCmd" CommandParameter="1.0" />
<KeyBinding Modifiers="Alt" Key="W" Command="main:Command.ScreenZoomCmd" CommandParameter="0.75" />
<KeyBinding Modifiers="Alt" Key="E" Command="main:Command.ScreenZoomCmd" CommandParameter="0.5" />
</Window.InputBindings>
Run Code Online (Sandbox Code Playgroud)
所以它基本上是Key按下触发器KeyBinding,它又触发CommandBinding指定的命令,触发相应的调用函数.
与上面的示例一样,您还可以定义CommandParameter将参数发送到最终调用的函数.关于这一点的好处是,就像上面一样,你可以CommandBinding通过在不同的方式中重复使用它来重复使用它CommandParameters.
您还可以CommandBindings通过Buttons,MenuItems等触发.
例:
<MenuItem Header="100%" InputGestureText="Alt+Q" Command="main:Command.ScreenZoomCmd" CommandParameter="1.0"/>
Run Code Online (Sandbox Code Playgroud)
这与语法相同InputBindings.
我花了一些时间才采用简约,统一的方式在WPF中使用绑定.我希望这篇文章可以防止这个概念容易引起的所有斗争.
| 归档时间: |
|
| 查看次数: |
20129 次 |
| 最近记录: |