一、概述

 在MVVM Light框架中,主要通过命令绑定来进行事件的处理。

 WPF中,命令是通过实现 ICommand 接口创建的。 ICommand 公开了两个方法(Execute 及 CanExecute)和一个事件(CanExecuteChanged)。

在MVVM Light框架中,RelayCommand类实现了ICommand 接口,用于完成命令绑定。

通过RelayCommand类的构造函数传入Action类型的Execute委托和Func<bool>类型的CanExecute委托,CanExecute委托用于表示当前命令是否可以执行,Execute委托则表示执行当前命令对应的方法。

通过命令绑定,解耦了View和ViewModel的行为交互,将视图的显示和业务逻辑分开。比如我们对界面上的某个按钮进行命令绑定,当点击按钮的时候,实际上进行操作是在对应的ViewModel下的所绑定的方法中执行的。

二、Demo

我们模拟以下场景:

界面上有一个添加用户的按钮,一个输入用户信息的TextBox,一个用于显示添加后结果Label,一个CheckBox。

按钮使用RelayCommand进行绑定,CheckBox用于控制命令的可用性。

 1 using GalaSoft.MvvmLight;
 2 
 3 namespace MvvmLightDemo1.Model
 4 {
 5     public class WelcomeModel : ObservableObject
 6     {
 7         private string welcomeMsg;
 8         public string WelcomeMsg
 9         {
10             get { return welcomeMsg; }
11             set { welcomeMsg = value; RaisePropertyChanged(() => WelcomeMsg); }
12         }
13     }
14 
15 }
View Code

相关文章: