WPF学习一:命令

来源:互联网 发布:网络教育和业余哪个好 编辑:程序博客网 时间:2024/05/21 14:52

一、传统事件与命令:

举例:一个应用程序有两种方式执行PrintDocument()方法;1、通过按钮;2、通过快捷键(B);


传统事件情况下,会为按钮事件和快捷键方式都创建两个事件(虽然使用的是同一个PrintDocument()方法),同时还要考虑快捷键是否会需要使用进行判断(原因是按钮的启用状态和快捷键启用状态并不是同步的);


命令情况下,主要增加了两个特性:1、将事件委托到适当的命令;2、使控件的启用状态和相应命令的状态保持同步;

二、命令的4个重要元素

1、命令;2、命令绑定;3、命令源;4、命令目标;

三、命令的核心是System.Window.Input.ICommand接口,该接口定义了命令的工作原理。

public interface ICommand

{

void Execute(object parameter);//最终触发一个在应用程序其他地方处理的事件;

bool CanExecute(object parameter);//返回命令的状态,可用返回true;不可用返回false;

event EventHandler CanExecuteChanged;//当命令状态改变时,引发该事件

//注意:命令可用,命令源可用;命令不可用,命令源也不可用;

}

四、RoutedCommand类

System.WIndows.Input.RoutedCommand类是WPF中唯一实现了ICommand接口的类;换句话说WPF命令都是该类的实例;

WPF命令模型的一种重要概念是,RoutedCommand类不包含任何应用程序逻辑。它只是代表一个命令,这意味着各个RoutedCommand对象具有相同的功能;

为了支持路由事件,该类实现了ICommand接口,并且添加了ICommand接口方法的一些不同的版本。最明显的变化是Execute()和CanExcute()使用了一个额外参数;

public void Execute(object parameter, IInputElement target);

public bool CanExecute(object parameter, IInputElement target);

参数target是开始处理事件的元素,事件从target元素开始,然后冒泡至高层的容器,直到处理事件;

五、RoutedUICommand类

RoutedUICommand类继承自RoutedCommand类,该类用于具有文本的命令,这些文本显示在用户界面中的某些地方,该类只增加了一个属性Text;优点是文本可以本地化;


六、命令为解决的问题:1、命令跟踪;2、“可撤销的命令”;3、具有状态并且可处于不同模式的命令;


原创粉丝点击