我订阅了一个命令的 IsExecuting:
LoginCommand.IsExecuting.Subscribe(x => Log("Logging in"));
Run Code Online (Sandbox Code Playgroud)
当我的 Command 被 InvokeCommand 调用时它工作正常,但是当我通过以下方式调用它时:
LoginCommand.Execute();
Run Code Online (Sandbox Code Playgroud)
IsExecuting observable 不会被触发。
这有效:
Observable.Start(() => { }).InvokeCommand(LoginCommand);
Run Code Online (Sandbox Code Playgroud)
有人知道为什么调用 Execute 方法时 IsExecuting 属性没有改变吗?我正在尝试对命令进行单元测试,所以我认为这将是从测试中执行它的最佳方式。
升级到ReactiveUI 7.0后,Execute()方法变了。现在它不会立即触发命令。相反,它会返回一个IObservable你必须订阅才能让事情发生的感冒。
LoginCommand.Execute().Subscribe();
Run Code Online (Sandbox Code Playgroud)
查看发行说明中有关 RxUI 7.0 更改的文章。Ctrl+F “ReactiveCommand 更好”。它明确指出:
ReactiveCommand 公开的 Execute 是反应性的(它返回 IObservable)。因此它很懒惰,除非有人订阅它,否则它不会做任何事情。
| 归档时间: |
|
| 查看次数: |
876 次 |
| 最近记录: |