一个可观察的多个订阅

时间:2015-09-16 19:26:43

标签: reactiveui

我的ViewModel上有读写属性,并且在更改时需要执行两个单独的操作:

 public decimal Paid {
    get { return paid; }
    set { this.RaiseAndSetIfChanged(ref paid, value); }
 }

...

在ctor中:

this.WhenAnyValue(pb => pb.Paid)
   .Select(amount => NumberToEnglish.ToSentence(amount))
   .ToProperty(this, x => x.AmountInWords, out amountInWords);

this.WhenAnyValue(pb => pb.Paid)
   .Subscribe(amount => SelectedPaymentBatch.Paid = amount );

有没有办法在一个声明中执行此操作,或者这是正确的方法吗?

1 个答案:

答案 0 :(得分:2)

在一个流中执行这两个操作非常可行,例如使用Do运算符(见下文),但我建议保留当前的方法,因为它正确地区分了两个问题,即不相关但它们触发同一财产的事实(但可能会改变)。

this.WhenAnyValue(pb => pb.Paid)
  .Do(amount => SelectedPaymentBatch.Paid = amount)
  .Select(amount => NumberToEnglish.ToSentence(amount))
  .ToProperty(this, x => x.AmountInWords, out amountInWords);