private void CreateViewModelAndAddToCollections(T treeItem) { if (modelDictionary.ContainsKey(treeItem.Identifier.Id)) { return; } IIdentityTreeItemViewModel <T> vm = CreateViewModel(treeItem); vm.Expanded += OnViewModelExpanded; vm.Selected += OnViewModelSelected; treeItem.ParentChanged += OnTreeItemParentChanged; modelDictionary.Add(treeItem.Identifier.Id, treeItem); viewModelDictionary.Add(treeItem.Identifier.Id, vm); allNodes.Add(vm); if (treeItem.Parent != null) { IIdentityTreeItemViewModel <T> parentVM = viewModelDictionary[treeItem.Parent.Identifier.Id]; vm.Parent = parentVM; parentVM.AddChild(vm); } foreach (var item in treeItem.Children) { CreateViewModelAndAddToCollections(item); } }
private void OnTreeItemParentChanged(object sender, IdentityTreeItemParentChangedEventArgs <T> e) { IIdentityTreeItem <T> treeItem = sender as IIdentityTreeItem <T>; IIdentityTreeItemViewModel <T> vm = viewModelDictionary[treeItem.Identifier.Id]; if (e.OldParent != null) { IIdentityTreeItemViewModel <T> oldParentVM = viewModelDictionary[e.OldParent.Identifier.Id]; oldParentVM.RemoveChild(vm.Identifier); } if (e.NewParent != null) { IIdentityTreeItemViewModel <T> newParentVM = viewModelDictionary[e.NewParent.Identifier.Id]; newParentVM.AddChild(vm); } }