需求
主菜单和一组工具栏的典型界面,则可以在菜单,工具栏,上下文菜单(例如,在主应用程序区域中单击鼠标右键时)使用新建(New)或打开(Open)等操作,以及使用键盘快捷键,如Ctrl+N和Ctrl+O.
对应上面的每种行为的响应代码都完全一样,但是传统的gui 应用程序中,你不得不为每一种行为定义一个对应的event 然后调用相同的方法。
这不是一种理想的处理方法。
在WPF中,微软尝试使用命令这个概念来解决这个问题。WPF会监听键盘快捷键,并且如果存在合适的命令,会直接调用,这使得命令成为一个理想的在应用中提供快捷键的方式。
命令绑定CommandBinding
命令实际上并没有自己做任何事情。在根目录中,它们由ICommand接口组成,该接口仅定义一个事件和两个方法:Execute()和CanExecute()。第一个用于执行实际操作,而第二个用于确定操作当前是否可用。
要执行命令的实际操作,您需要命令和代码之间的链接,这是CommandBinding发挥作用的地方。
CommandBinding通常在Window或UserControl上定义,并保存对它处理的Command的引用,以及用于处理Command的Execute()和CanExecute()事件的实际事件处理程序。
实际用法
<Window x:Class="命令.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="MainWindow" Height="100" Width="200">
<Window.CommandBindings>
<CommandBinding Command="ApplicationCommands.New" Executed="NewCommand_Executed" CanExecute="NewCommand_CanExecute" />
</Window.CommandBindings>
<StackPanel HorizontalAlignment="Center" VerticalAlignment="Center">
<Button Command="ApplicationCommands.New">New</Button>
</StackPanel>
</Window>
using System.Windows;
using System.Windows.Input;
namespace 命令
{
/// <summary>
/// MainWindow.xaml