public virtual void RemoveAt(int index) { T removedItem = _items[index]; string removedKey = _keys[index]; _items.RemoveAt(index); _keys.RemoveAt(index); if (ItemRemove != null) { ItemRemove(this, new KeyedCollectionRemoveEventArgs(removedItem, removedKey, index)); } if (CollectionChanged != null) { CollectionChanged(this, new EventArgs()); } }