我如何制作" atomic"更改了几个ReactiveUI属性?

时间:2015-04-10 18:05:03

标签: wpf reactiveui

我想要更改多个属性,然后将所有更改一起通知它们,以便在更新整个状态之前不会发出任何通知。有没有正确的方法来做到这一点?如果我这样做:

this.Prop1 = newValue1;
this.Prop2 = newValue2;

并且属性设置者调用RaiseAndSetIfChanged,然后我将在无效状态期间收到通知。我喜欢写类似的东西:

using (new RxTransactionScope()) {
    this.Prop1 = newValue1;
    this.Prop2 = newValue2;
}

这将导致它们都被设置,然后两个要发送的通知。

1 个答案:

答案 0 :(得分:2)

class ViewModel {
   ....
    public IDisposable BeginUpdate()
    {
        return new CompositeDisposable(this.SuppressChangeNotifications(), Disposable.Create(() =>
        {
            this.RaisePropertyChanged("Prop1");
            this.RaisePropertyChanged("Prop2");
        }));
    }

using(this.BeginUpdate()) 
{
   this.Prop1 = newValue1;
   this.Prop2 = newValue2;
}