private void Applications_CollectionChanged(object sender, NotifyCollectionChangedEventArgs e) { var comparer = new ApplicationEqualityComparer(); if (e.Action.Equals(NotifyCollectionChangedAction.Add)) { foreach (var item in e.NewItems) { var app = item as Application; base.Children.Add(new ApplicationTreeViewItemViewModel(app, this)); } } else if (e.Action.Equals(NotifyCollectionChangedAction.Remove)) { foreach (var item in e.OldItems) { var appsToRemove = new List <TreeViewItemViewModel>(); var app = item as Application; foreach (var treeView in base.Children) { var appTreeView = treeView as ApplicationTreeViewItemViewModel; if (comparer.Equals(appTreeView.Application, app)) { appsToRemove.Add(treeView); } } foreach (var treeView in appsToRemove) { base.Children.Remove(treeView); } } } else if (e.Action.Equals(NotifyCollectionChangedAction.Replace)) { foreach (var item in e.NewItems) { var app = item as Application; foreach (var treeView in base.Children) { var appTreeView = treeView as ApplicationTreeViewItemViewModel; if (comparer.Equals(appTreeView.Application, app)) { appTreeView.Application = app; if (!appTreeView.HasNotBeenPopulated) { appTreeView.LoadChildren(); } } } } } else if (e.Action.Equals(NotifyCollectionChangedAction.Reset)) { base.Children.Clear(); } }
private void Applications_CollectionChanged(object sender, NotifyCollectionChangedEventArgs e) { var comparer = new ApplicationEqualityComparer(); if (e.Action.Equals(NotifyCollectionChangedAction.Add)) { foreach (object item in e.NewItems) { var app = item as Application; base.Children.Add(new ApplicationTreeViewItemViewModel(app, this)); } } else if (e.Action.Equals(NotifyCollectionChangedAction.Remove)) { foreach (object item in e.OldItems) { var appsToRemove = new List<TreeViewItemViewModel>(); var app = item as Application; foreach (TreeViewItemViewModel treeView in base.Children) { var appTreeView = treeView as ApplicationTreeViewItemViewModel; if (comparer.Equals(appTreeView.Application, app)) appsToRemove.Add(treeView); } foreach (TreeViewItemViewModel treeView in appsToRemove) base.Children.Remove(treeView); } } else if (e.Action.Equals(NotifyCollectionChangedAction.Replace)) { foreach (object item in e.NewItems) { var app = item as Application; foreach (TreeViewItemViewModel treeView in base.Children) { var appTreeView = treeView as ApplicationTreeViewItemViewModel; if (comparer.Equals(appTreeView.Application, app)) { appTreeView.Application = app; if (!appTreeView.HasNotBeenPopulated) appTreeView.LoadChildren(); } } } } else if (e.Action.Equals(NotifyCollectionChangedAction.Reset)) base.Children.Clear(); }