我想要更改多个属性,然后将所有更改一起通知它们,以便在更新整个状态之前不会发出任何通知。有没有正确的方法来做到这一点?如果我这样做:
this.Prop1 = newValue1;
this.Prop2 = newValue2;
并且属性设置者调用RaiseAndSetIfChanged
,然后我将在无效状态期间收到通知。我喜欢写类似的东西:
using (new RxTransactionScope()) {
this.Prop1 = newValue1;
this.Prop2 = newValue2;
}
这将导致它们都被设置,然后两个要发送的通知。
答案 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;
}