void DoneUpdate() { int oldMode = _updateMode; _updateMode = 0; if (_updateProps != 0) { RaisePropertyItems props = _updateProps; _updateProps = 0; RaisePropertyChanged(props); } if (oldMode == 1) { CollectionChangedEventArgs <TItem> c = _change; _change = null; if (c != null) { RaiseCollectionChanged(c); } /* else NOOP batch */ } else { RaiseCollectionChanged(new CollectionChangedEventArgs <TItem>(CollectionChange.Reset)); } }
void RaisePropertyChanged(RaisePropertyItems which) { if (_updateMode == 0) { if ((which & RaisePropertyItems.Count) != 0) { OnPropertyChanged(new PropertyChangedEventArgs("Count")); } if ((which & RaisePropertyItems.Items) != 0) { OnPropertyChanged(new PropertyChangedEventArgs("Item[]")); } } else { _updateProps |= which; } }