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