WPF学习笔记“命令”一:命令基础

一、传统事件与命令:

  举例:一个应用程序有两种方式执行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、具有状态并且可处于不同模式的命令;

posted on 2012-10-07 16:45  紫雨心  阅读(292)  评论(0编辑  收藏  举报

导航