命令有许多可变的部分组成,但它们都具有以下4个重要元素:
- 命令:命令表示应用程序任务,并且跟踪任务是否能够被执行。然而,命令实际上不包含执行应用程序任务的代码。
- 命令绑定:每个命令绑定针对用户界面的具体元素,将命令连接到相关的应用程序逻辑。这种分解的设计是非常重要的,因为单个命令可用于应用程序中的多个地方,并且在每个地方具有不同的意义。为处理这一问题,需要将同一命令与不同的命令绑定。
- 命令源:命令源触发命令。例如,button就是命令源。单击它们都会执行绑定命令。
- 命令目标:命令目标是在其中执行命令的元素。
WPF命令的核心是System.Windows.Input.ICommand
接口,该接口定义了命令的工作原理。该接口包含两个方法
和一个事件:
public interface ICommand
{
void Execute(object parameter);
bool CanExecute(object parameter);
event EventHandler CanExecuteChanged;
}
- Execute方法将包含引用程序任务逻辑。
- CanExecute方法返回命令的状态。可用为true,不可用为false;
- Execute和CanExecute方法都接受一个附加的对象参数,可使用该对象传递所需的任何附加信息。
- CanExecuteChanged,当命令状态改变是引发该事件。对于使用命令的任何控件,这是指示信号,表示他们应当调用
CanExecute方法检查命令的状态。通过使用该事件,当命令可用时,命令源(如button)可自动启用自身;当命令不可用时,禁用自身。