【认识Command】
我们之前说过,WPF本身就为我们提供了一个基础的MVVM框架,本节要讲的命令就是其中一环,通过在ViewModel中声明命令,从View中使用Binding绑定命令,就能实现从View到ViewModel之间操作的流通。
ICommand 接口:
所有的命令都是需要继承ICommand接口,该接口有如下三个成员:
我们先说第二个成员,它是个返回值为bool的方法,通过这个方法,可以设置命令能不能继续执行,即返回值为TRUE,命令继续执行,返回值为FALSE命令不会执行;
第一个成员是个事件处理器,从名字可以看出来该事件处理器关注于第二个成员,也就是当命令能否执行的状态出现改变时可以使用此事件通知到关注此命令执行状态的成员;
第三个成员也是个方法,命令的执行逻辑放在这个方法里边,当CanExecute返回值为TRUE时,该方法才会被执行。
【自定义Command】下面我们就来自定义一个命令,这样能比较方便的演示命令的使用:
本节以MVVM模式演示,项目结构如下:
MyCommand为自定义的命令类,代码如下:
MyCommand类在实例化时需要外部传入执行的方法以及能否继续执行的判断方法。
MainViewModel中的代码如下:
在ViewModel中声明命令要注意,命令必须是属性,不能是字段。
View代码如下: