2014-01-23 3 views
7

Я пытаюсь использовать WhenAnyObservable в первый раз.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); 

У меня возникли проблемы с его работой.

Есть ли какой-либо трюк, который я должен делать, или я должен использовать одну из других команд WhenAny?

ответ

4

У вас есть правильная идея, но 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); 
+2

Я не видел, что идущий Павла - У меня возникли проблемы с WhenAnyObservable (неожиданными) - но это не то, что-то нелогичным? Если это называется «When * Any *». Я чувствую, что мне приходится спускаться и регулярно проверять исходный код RxUI. И я не жалуюсь, ты отлично справился с этим. И Observables могут сделать это с кодом – NSGaga

+0

System.NotSupportedException: выражения индекса поддерживаются только константами. – Den

0

При попытке использовать WhenAnyObservable я получаю ошибку индекса. Я закончил с использованием

Observable.CombineLatest(
    SomeItems.Changed.Select(x => true), 
    this.WhenAnyValue(y => y.SomeBoolProperty), 
    (b,g) => b && g) 
Смежные вопросы