private void CloseOpenedSection(object sender, ViewModelEventArgs e) { ViewModelSection callingObj = sender as ViewModelSection; //return if list of section is empty if (_openedViews.Count == 0) { return; } do { var lastNode = _openedViews.Last; _openedViews.RemoveLast(); lastNode.Value.CreateView -= AddSectionToPipe; lastNode.Value.WantToClose -= CloseOpenedSection; //Delete filter if exists if (lastNode.Value.Filter != null) { _openedViews.Remove(lastNode.Value.Filter); } if (lastNode.Value == callingObj) { break; } } while (_openedViews.Count > 0); if (_openedViews.Count == 0) { SelectedMenuItem.IsSelected = false; } }
private void Remove(Entity entity) { if (!entityMap.ContainsKey(entity)) { return; } var node = entityMap[entity]; entityMap.Remove(entity); entities.Remove(node); }
void Users_CollectionChanged(object sender, System.Collections.Specialized.NotifyCollectionChangedEventArgs e) { switch (e.Action) { case System.Collections.Specialized.NotifyCollectionChangedAction.Add: foreach (var item in e.NewItems) { _users.AddLast(item as MaterialContainableBase); } break; case System.Collections.Specialized.NotifyCollectionChangedAction.Remove: foreach (var item in e.OldItems) { _users.Remove(item as MaterialContainableBase); } break; // Replace is not needed, since it remains an item anyway. } }