RelayCommand

RelayCommand 实现 ICommand 接口,因此可用于绑定 XAML 中的 Commands(作为 Button 元素的 Command 属性)

构造函数有两个参数; 第一个是 Action,如果调用 ICommand.Execute 将被执行(例如用户点击按钮),第二个是 Func<bool>,它确定是否可以执行动作(默认为 true,在下一段中称为 canExecute)。

基本结构如下:

public ICommand MyCommand => new RelayCommand(
    () =>
    {
        //execute action
        Message = "clicked Button";
    },
    () =>
    {
        //return true if button should be enabled or not
        return true;
    }
);

一些值得注意的影响:

  • 如果 canExecute 返回 false,则将禁用该用户的 Button
  • 在真正执行操作之前,将再次检查 canExecute
  • 你可以调用 MyCommand.RaiseCanExecuteChanged(); 来强制重新评估 canExecute Func