如何使用ReactiveCommand canexecute

时间:2014-06-02 09:35:20

标签: command prism reactiveui

我是WPF的新手,使用reactiveUI实现应用程序。 我有一个按钮,并为它添加了命令处理程序。 只有当canExecute为true时才想调用该方法。

在viewmodel中,我定义了它

public bool canExecute 
{
  get { return _canExecute;}
  set { _canExecute = value;}
}

Bind()
{
 AddRecord = new ReactiveCommand(_canExecute);

    AddRecord .Subscribe(x => 
    {
       AddR()
}
}
void AddR()
{
}

但它不起作用。如何将其转换为System.IObservable?

1 个答案:

答案 0 :(得分:5)

正如@jomtois所提到的,你需要修改你的CanExecute声明:

bool canExecute;
public bool CanExecute {
    get { return canExecute; }
    set { this.RaiseAndSetIfChanged(ref canExecute, value); }
}

然后,你可以写:

AddRecord = new ReactiveCommand(this.WhenAnyValue(x => x.CanExecute));

为什么要去做所有这些努力?这使得当CanExecute更改时,ReactiveCommand会自动启用/禁用。但是,这个设计非常必要,我不会创建一个CanExecute布尔值,我想一想如何组合与我的ViewModel相关的具有语义含义的属性。