private void MeaningsChanged(object sender, NotifyCollectionChangedEventArgs e) { switch (e.Action) { case NotifyCollectionChangedAction.Remove: case NotifyCollectionChangedAction.Replace: case NotifyCollectionChangedAction.Reset: if (_meanings.Count > 0) { var meanings = new HashSet <Meaning>(_meanings); foreach (Variety variety in _varieties) { variety.Words.RemoveAll(w => !meanings.Contains(w.Meaning)); } CognacyDecisions.RemoveAll(cd => !meanings.Contains(cd.Meaning)); } else { foreach (Variety variety in _varieties) { variety.Words.Clear(); } CognacyDecisions.Clear(); } break; } }
private void VarietiesChanged(object sender, NotifyCollectionChangedEventArgs e) { switch (e.Action) { case NotifyCollectionChangedAction.Remove: case NotifyCollectionChangedAction.Replace: case NotifyCollectionChangedAction.Reset: if (_varieties.Count > 0) { var varieties = new HashSet <Variety>(_varieties); _varietyPairs.RemoveAll(vp => !varieties.Contains(vp.Variety1) || !varieties.Contains(vp.Variety2)); CognacyDecisions.RemoveAll(cd => !varieties.Contains(cd.Variety1) || !varieties.Contains(cd.Variety2)); } else { _varietyPairs.Clear(); CognacyDecisions.Clear(); } break; } }