如何将ReactiveCommand与IObservable绑定?

时间:2017-07-24 23:14:45

标签: c# xamarin xamarin.ios system.reactive reactiveui

我有一个命令(ReactiveCommand),我想在用户选择列表中的项目时执行此命令。

列表公开了一个可观察的IObservable<object>,所以每当有一个新的事件被发送到这个observable时,我想执行我的命令。

我带来了这个,但它似乎很复杂。

source.ElementSelected
    .Cast<Item>()
    .SelectMany(ViewModel.ShowDetailsCommand.Execute)
    .Subscribe();

我想知道是否有更好的方法吗?命令和控件是否存在类似BindCommand的内容?

1 个答案:

答案 0 :(得分:1)

通常我会使用WhenAnyObservable或类似的东西。 RxUI中的大多数样本也使用类似的语法,将一个observable链接到一个Execute中。

虽然InvokeCommand是简化一点点的一种方法。

https://reactiveui.net/docs/handbook/commands/invoking-commands

否则可能只需要制作自己的扩展方法。

另外,我只想确定指出

  

InvokeCommand尊重命令的可执行性。也就是说,如果   command的CanExecute方法返回false,InvokeCommand则不返回false   当source observable滴答时执行命令。