Reputation: 2888
I am attempting to use WhenAnyObservable for the first time.
When a ReactiveList Count == 0 and a tipText length is > 0 then I want to set a local value to true in the subscribe, or the opposite.
this.ViewModel.WhenAnyObservable(
x => x.AutoCompleteItems.CountChanged,
x => x.ObservableForProperty(y => y.TipText),
(countChanged, tipText) => countChanged == 0 && tipText.Length > 0);
I am having trouble getting this to work.
Is there any trick I should be doing, or should I be using one of the other WhenAny commands?
Upvotes: 9
Views: 5169
Reputation: 16463
I get an index error when trying to use WhenAnyObservable. I ended up using
Observable.CombineLatest(
SomeItems.Changed.Select(x => true),
this.WhenAnyValue(y => y.SomeBoolProperty),
(b,g) => b && g)
Upvotes: 3
Reputation: 74702
You've got the right idea, but WhenAnyObservable doesn't return items until it has an initial item for both "sides" if you use >1 Observables. So you probably want:
this.ViewModel.WhenAnyObservable(
x => x.AutoCompleteItems.CountChanged.StartWith(0),
x => x.WhenAnyValue(y => y.TipText),
(countChanged, tipText) => countChanged == 0 && tipText.Length > 0);
Upvotes: 5