我的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 );
有没有办法在一个声明中执行此操作,或者这是正确的方法吗?
答案 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);