如何在ReactiveCommand执行期间禁用按钮,然后在完成后重新启用?

时间:2017-11-09 13:16:50

标签: c# android xamarin xamarin.android reactiveui

我写了一个使用ReactiveUI的简单Xamarin.Android应用: https://github.com/oscarvarto/RxCounter/blob/master/RxCounter/MainActivity.cs 这个想法如下:

当前代码正在运行,但我依赖于布尔标志: https://github.com/oscarvarto/RxCounter/blob/master/RxCounter/ClickCounterViewModel.cs#L13-L18ViewModel.IOIntensiveCmd完成执行时通知按钮。

如何在ReactiveCommand执行期间使用Observables或ReactiveUI机制来禁用 - 然后启用按钮?

例如,如何生成IObservable<boolean>切换由ReactiveCommand的开始/结束发出信号的Button.Enabled标志?

1 个答案:

答案 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对于按钮文本可能会有所帮助。