internal void RemoveAtInternal(int index) { var syncActionData = new SyncActionData(index, Items[index]); SyncCore(SyncAction.PreRemove, syncActionData); Items.RemoveAt(index); SyncCore(SyncAction.PostRemove, syncActionData); }
internal void InsertInternal(int index, TItem item) { var syncActionData = new SyncActionData(index, item); SyncCore(SyncAction.PreInsert, syncActionData); Items.Insert(index, item); SyncCore(SyncAction.PostInsert, syncActionData); }
protected override void SyncCore(SyncAction syncAction, SyncActionData syncActionData) { switch (syncAction) { case SyncAction.PreClear: case SyncAction.PreInit: Children.Clear(); break; case SyncAction.PostInit: SyncBase(); break; case SyncAction.PreInsert: SyncBase(); break; case SyncAction.PostInsert: Children.Insert(syncActionData.Index, GetActualElement(syncActionData.Item)); break; case SyncAction.PreRemove: SyncBase(); break; case SyncAction.PostRemove: Children.RemoveAt(syncActionData.Index); break; } }
protected abstract void SyncCore(SyncAction syncAction, SyncActionData syncActionData);