public void RecordRemoved(IDataRecord record) { if (record == GraphData) { return; } List <GraphItemViewModel> removeList = new List <GraphItemViewModel>(); var filterItem = record as FilterItem; if (filterItem != null) { var node = filterItem.Node; if (node != null) { foreach (var item in GraphItems) { if (item.DataObject == node) { removeList.Add(item); removeList.AddRange(item.Connectors.OfType <GraphItemViewModel>()); } } } if (FilterItems.ContainsKey(filterItem.NodeId)) { FilterItems.Remove(filterItem.NodeId); } } else { for (int index = 0; index < GraphItems.Count; index++) { var item = GraphItems[index]; if (item.DataObject == record) { removeList.Add(item); removeList.AddRange(item.Connectors.OfType <GraphItemViewModel>()); } item.RecordRemoved(record); } } foreach (var remove in removeList) { GraphItems.Remove(remove); } if (removeList.Count > 0) { RefreshConnectors(); } }