在Silverlight中的MVVM模式下将前台页面和ViewModel界面交互分离开是通过本节所要讲述的Command实现的。我们自定义一个Command需要继承于ICommand接口并且实现这个接口。它有CanExecute()、Execute()方法和CanExecuteChanged事件组成。

      CanExecute():判断是否继续执行操作。

      Execute():执行操作的内容。

      CanExecuteChanged:当出现影响是否应执行该命令的更改时发生。

    首先:自定义的一个btnCommand。

public class btnCommand:ICommand     { private bool canExe; ///  /// 构造函数设置是否执行操作 ///  ///          public btnCommand(bool canexe)         { this.canExe = canexe;         } ///  /// 判断是否执行操作 ///  ///  /// 
public bool CanExecute(object parameter) { if (canExe) { return true; } return false; } /// /// 是否执行操作的变更发生时 /// public event EventHandler CanExecuteChanged; /// /// 执行操作的内容,可以变为Action行为 /// /// public void Execute(object parameter) { if (parameter != null) { MessageBox.Show(parameter.ToString()); } else { MessageBox.Show("未设置CommandParameter"); } } }

    其次:定义一个ViewModel,并且在构造函数中初始化两个Command属性。

public class BtnViewModel     { // 设置两个命令         public ICommand BtnCommand { get; set; } public ICommand BtnCommandTrue { get; set; } public BtnViewModel()         { //初始化两个命令值             BtnCommand = new btnCommand(false);             BtnCommandTrue = new btnCommand(true);         }     }

    再次将ViewModel初始化为页面数据源

    最后:前台的两个按钮绑定Command

    如需源码请点击  下载,下面是效果图。有一个按钮CanExecute,有一个不能点击。