ReactiveUI How to use WhenAnyObservable properly

北慕城南 提交于 2019-12-19 06:21:17

问题


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?


回答1:


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);



回答2:


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)


来源:https://stackoverflow.com/questions/21317264/reactiveui-how-to-use-whenanyobservable-properly

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!