private void lv_NLM_SelectionChanged(object sender, SelectionChangedEventArgs e) { foreach (DataRowView x in e.AddedItems) { LearnerFAM tmp = _learner.LearnerFAMList.Where(f => f.LearnFAMType == "NLM" && f.LearnFAMCode == int.Parse(x[0].ToString())).FirstOrDefault(); if (tmp == null) { if (_learner.NLM.Count < _maxNLMItem) { _learner.AddFAM(LearnerFAM.MultiOccurrenceFAMs.NLM, int.Parse(x[0].ToString())); } else { MessageBox.Show(String.Format(" You may only select {0} items.", _maxNLMItem.ToString()) , "Max number of selectable items reached." , MessageBoxButton.OK , MessageBoxImage.Information , MessageBoxResult.OK); x["IsSelected"] = Convert.ToBoolean(false); OnPropertyChanged("NLMList"); } } } foreach (DataRowView x in e.RemovedItems) { Console.WriteLine(string.Format("Remove {0}", x[0].ToString())); foreach (int fam in _learner.NLM) { if (fam.ToString() == x[0].ToString()) { _learner.RemoveFAM(LearnerFAM.MultiOccurrenceFAMs.NLM, int.Parse(x[0].ToString())); break; } } } }