public virtual void MoveByIndex(int index, int newIndex) { _items.MoveByIndex(index, newIndex); _keys.MoveByIndex(index, newIndex); if (ItemMove != null) { ItemMove(this, new KeyedCollectionMoveEventArgs(_items[newIndex], newIndex, index, _keys[newIndex])); } if (CollectionChanged != null) { CollectionChanged(this, new EventArgs()); } }