我有一个命令(ReactiveCommand
),我想在用户选择列表中的项目时执行此命令。
列表公开了一个可观察的IObservable<object>
,所以每当有一个新的事件被发送到这个observable时,我想执行我的命令。
我带来了这个,但它似乎很复杂。
source.ElementSelected
.Cast<Item>()
.SelectMany(ViewModel.ShowDetailsCommand.Execute)
.Subscribe();
我想知道是否有更好的方法吗?命令和控件是否存在类似BindCommand
的内容?
答案 0 :(得分:1)
通常我会使用WhenAnyObservable或类似的东西。 RxUI中的大多数样本也使用类似的语法,将一个observable链接到一个Execute中。
虽然InvokeCommand是简化一点点的一种方法。
https://reactiveui.net/docs/handbook/commands/invoking-commands
否则可能只需要制作自己的扩展方法。
另外,我只想确定指出
InvokeCommand尊重命令的可执行性。也就是说,如果 command的CanExecute方法返回false,InvokeCommand则不返回false 当source observable滴答时执行命令。