ReactiveUI如何正确使用WhenAnyObservable

Gle*_*son 7 .net wpf reactiveui

我试图第一次使用WhenAnyObservable.

当ReactiveList Count == 0且tipText长度> 0时,我想在订阅中将本地值设置为true,或者相反.

        this.ViewModel.WhenAnyObservable(
            x => x.AutoCompleteItems.CountChanged,
            x => x.ObservableForProperty(y => y.TipText),
            (countChanged, tipText) => countChanged == 0 && tipText.Length > 0);
Run Code Online (Sandbox Code Playgroud)

我无法让这个工作.

有什么技巧我应该做,或者我应该使用其他WhenAny命令之一?

Ana*_*tts 5

您的想法是正确的,但是 WhenAnyObservable 不会返回项目,除非您使用 >1 Observables 的两个“双方”都有初始项目。所以你可能想要:

this.ViewModel.WhenAnyObservable(
    x => x.AutoCompleteItems.CountChanged.StartWith(0),
    x => x.WhenAnyValue(y => y.TipText),
    (countChanged, tipText) => countChanged == 0 && tipText.Length > 0);
Run Code Online (Sandbox Code Playgroud)

  • System.NotSupportedException:索引表达式仅支持常量。 (3认同)
  • 我没有看到那个即将到来的 Paul - 我在 WhenAnyObservable (意外)方面遇到了麻烦 - 但这不是违反直觉的吗?如果它被称为“When*Any*”。我觉得我必须经常停下来检查 RxUI 源代码。我不是在抱怨,你做得很好。Observables 可以对代码执行此操作 (2认同)