我写了一个使用ReactiveUI的简单Xamarin.Android应用: https://github.com/oscarvarto/RxCounter/blob/master/RxCounter/MainActivity.cs 这个想法如下:
Task
(或Task<T>
)期间,应禁用按钮。Task
(或Task<T>
)。
请参阅https://github.com/oscarvarto/RxCounter/blob/master/RxCounter/ClickCounterViewModel.cs#L22 Task
(或Task<T>
)按钮后,应重新启用。 当前代码正在运行,但我依赖于布尔标志:
https://github.com/oscarvarto/RxCounter/blob/master/RxCounter/ClickCounterViewModel.cs#L13-L18
在ViewModel.IOIntensiveCmd
完成执行时通知按钮。
如何在ReactiveCommand执行期间使用Observables或ReactiveUI机制来禁用 - 然后启用按钮?
例如,如何生成IObservable<boolean>
切换由ReactiveCommand的开始/结束发出信号的Button.Enabled标志?
答案 0 :(得分:1)
ReactiveUI有几个帮助:
将命令直接绑定到视图中的按钮(参见https://reactiveui.net/docs/handbook/commands/binding-commands)
this.BindCommand(
this.ViewModel,
x => x.IOIntensiveCmd,
x => x.MyButton);
使用ReactiveCommand.IsExecuting(IObservable<bool>
)。
例如,IsExecuting observable对于按钮文本可能会有所帮助。