private void InstanceCollection_CollectionChanged(object sender, NotifyCollectionChangedEventArgs e) { var comparer = new InstanceEqualityComparer(); if (e.Action.Equals(NotifyCollectionChangedAction.Add)) { foreach (object item in e.NewItems) { var instance = item as Instance; base.Children.Add(new InstanceTreeViewItemViewModel(instance, this)); } } else if (e.Action.Equals(NotifyCollectionChangedAction.Remove)) { foreach (object item in e.OldItems) { var toRemove = new List <TreeViewItemViewModel>(); var instance = item as Instance; foreach (TreeViewItemViewModel treeView in base.Children) { var instanceTreeView = treeView as InstanceTreeViewItemViewModel; if (instanceTreeView != null) { if (comparer.Equals(instanceTreeView.Instance, instance)) { toRemove.Add(treeView); } } } foreach (TreeViewItemViewModel treeView in toRemove) { base.Children.Remove(treeView); } } } else if (e.Action.Equals(NotifyCollectionChangedAction.Replace)) { foreach (object item in e.NewItems) { var instance = item as Instance; foreach (TreeViewItemViewModel treeView in base.Children) { var instanceTreeView = treeView as InstanceTreeViewItemViewModel; if (instanceTreeView != null) { if (comparer.Equals(instanceTreeView.Instance, instance)) { instanceTreeView.Instance = instance; if (!instanceTreeView.HasNotBeenPopulated) { instanceTreeView.LoadChildren(); } } } } } } else if (e.Action.Equals(NotifyCollectionChangedAction.Reset)) { base.Children.Clear(); } }
private void InstanceCollection_CollectionChanged(object sender, NotifyCollectionChangedEventArgs e) { var comparer = new InstanceEqualityComparer(); if (e.Action.Equals(NotifyCollectionChangedAction.Add)) { foreach (var item in e.NewItems) { var instance = item as Instance; base.Children.Add(new InstanceTreeViewItemViewModel(instance, this)); } } else if (e.Action.Equals(NotifyCollectionChangedAction.Remove)) { foreach (var item in e.OldItems) { var toRemove = new List<TreeViewItemViewModel>(); var instance = item as Instance; foreach (var treeView in base.Children) { var instanceTreeView = treeView as InstanceTreeViewItemViewModel; if (instanceTreeView != null) { if (comparer.Equals(instanceTreeView.Instance, instance)) toRemove.Add(treeView); } } foreach (var treeView in toRemove) base.Children.Remove(treeView); } } else if (e.Action.Equals(NotifyCollectionChangedAction.Replace)) { foreach(var item in e.NewItems) { var instance = item as Instance; foreach (var treeView in base.Children) { var instanceTreeView = treeView as InstanceTreeViewItemViewModel; if (instanceTreeView != null) { if (comparer.Equals(instanceTreeView.Instance, instance)) { instanceTreeView.Instance = instance; if (!instanceTreeView.HasNotBeenPopulated) instanceTreeView.LoadChildren(); } } } } } else if (e.Action.Equals(NotifyCollectionChangedAction.Reset)) base.Children.Clear(); }
/// <summary> /// Initializes new instance of <see cref="AbstractionEventHandlerLookup{TAbstraction,TImplementation}"/>. /// </summary> public AbstractionEventHandlerLookup() { var comparer = new InstanceEqualityComparer <EventHandler <TAbstraction> >(); _lookup = new Dictionary <EventHandler <TAbstraction>, AbstractionEventHandlerContext <TImplementation> >(comparer); }