一、前言
常用WPF开发在ViewModel中实现INotifyPropertyChanged接口,通过触发PropertyChanged事件达到通知UI更改的目的。
在MVVMLight框架里,这里定义的ViewModel都继承自ViewModelBase,ViewModelBase封装在MVVMLight框架中,它已经实现了INotifyPropertyChanged接口,因此在定义ViewModel属性时,只需要调用RaisePropertyChanged(PropertyName)就可以进行属性更改通知了。事件是WPF/SL应用程序中UI与后台代码进行交互的最主要方式,与传统方式不同,MVVM中主要通过绑定到命令来进行事件的处理。
因此要了解MVVM中处理事件的方式,就必须先熟悉命令的工作原理。
二、RelayCommand命令
WPF命令是通过实现 ICommand 接口创建的。 ICommand 公开两个方法(Execute 及 CanExecute)和一个事件(CanExecuteChanged)。
在MVVMLight中实现ICommand接口的类是RelayCommand,RelayCommand通过构造函数初始化Execute方法 和 CanExecute方法,因此,构造函数传入的是委托类型的参数,Execute 和 CanExecute则执行的是委托的方法,RelayCommand相关代码如下: