如何从我的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;因为 它不是委托类型
答案 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方法。