反应性地将多个可观察变量合并为一个可观察布尔变量

时间:2020-04-11 11:43:42

标签: c# reactive reactiveui avaloniaui

我该如何合并观测值。

IObservable<bool> addCommandIsExecutingObservable = this.WhenAnyObservable(x => x.AddCommand.IsExecuting).StartWith(false).Select(x => x);
IObservable<bool> cleanCommandIsExecutingObservable = this.WhenAnyObservable(x => x.CleanCommand.IsExecuting).StartWith(false).Select(x => x);
IObservable<bool> tagIsSuitableObservable = this.WhenAnyValue(x => x.Tag).StartWith(string.Empty).Select(x => !string.IsNullOrWhiteSpace(x) && x.Length >= 3);
IObservable<bool> warehouseBarcodeIsSuitableObservable = this.WhenAnyValue(x => x.WarehouseBarcode).StartWith(0).Select(x => x > 0);
IObservable<bool> stockAmountIsSuitableObservable = this.WhenAnyValue(x => x.StockAmount).StartWith(0).Select(x => x > 0);
IObservable<bool> subcategoryIdIsSuiableObservable = this.WhenAnyValue(x => x.SubcategorySearchingFormViewModel.Id).StartWith(0).Select(x => x > 0);

我正在尝试使用该代码

IObservable<bool> addCommandCanExecute = Observable.Merge(addCommandIsExecutingObservable.Select(x => !x), cleanCommandIsExecutingObservable.Select(x => !x), tagIsSuitableObservable, warehouseBarcodeIsSuitableObservable, stockAmountIsSuitableObservable, subcategoryIdIsSuiableObservable);

我想如果所有可观察值均为true,则返回true,如果一个可观察值为false,则返回false。

0 个答案:

没有答案