如何从我的XAML页面绑定到ReactiveCommand的最新版本(6.5)

时间:2015-12-16 10:25:25

标签: xaml win-universal-app reactiveui

如何从我的XAML页面绑定到最新版本的ReactiveCommand?

在ReactiveUI(6.5)中,不再支持以下命令属性声明:

public ReactiveCommand ClickMe { get; private set; }

因此,在XAML中声明的按钮是否仍然可以使用" Button.Command"在视图模型上调用命令。属性?

我尝试了以下内容:

public class InstructionsViewModel : ReactiveObject
{
    public InstructionsViewModel()
    {
         Accept = ReactiveCommand.Create(x => Debug.WriteLine("Hello World"));
    }

    public ReactiveCommand<object> Accept { get; }
}
  

无法将lambda表达式转换为类型&#39; IObservable&#39;因为   它不是委托类型

2 个答案:

答案 0 :(得分:1)

在ReactiveUI 6.5中,ReactiveCommand现在是通用的:ReactiveCommand<T>(因此您需要相应地更新您的媒体资源类型,可能是ReactiveCommand<object>ReactiveCommand<Unit> -generic ReactiveCommand现在是一个带有工厂方法的静态助手类)

但它仍然实现了ICommand,你仍然可以将它绑定在你的XAML中。

答案 1 :(得分:1)

ReactiveCommand.Create方法将为您创建反应命令。传递给create方法的参数是IObservable,它告诉命令是否可以执行。如果你想对该命令作出反应,你必须订阅。

Accept = ReactiveCommand.Create();
Accept.Subscribe(_ => Debug.WriteLine("Hello World"));

ReactiveCommand实现ICommand,因此您可以在XAML中绑定它。 CommandParameter值将发送到您的Subscribe方法。