//Because wpf can't guess if just want to remove equipment from Warrior or delete completely from database private void EquipmentCollectionChanged(object sender, NotifyCollectionChangedEventArgs e) { if (_isLoading || _isWarriorListChanging) { return; } if (e.Action == NotifyCollectionChangedAction.Remove) { _repo.DeleteEquipment(e.OldItems); SetWarriorDirty(); } if (e.Action == NotifyCollectionChangedAction.Add) { _currentWarrior.EquipmentOwned.AddRange(e.NewItems.Cast <WarriorEquipment>()); SetWarriorDirty(); } }