コード例 #1
0
        private void RemoveViewModelFromCollections(IIdentifier identifier)
        {
            if (!modelDictionary.ContainsKey(identifier.Id))
            {
                return;
            }

            IIdentityTreeItemViewModel <T> vm = viewModelDictionary[identifier.Id];

            vm.Expanded             -= OnViewModelExpanded;
            vm.Selected             -= OnViewModelSelected;
            vm.Target.ParentChanged -= OnTreeItemParentChanged;
            if (SelectedTreeItem == vm)
            {
                SelectedTreeItem = null;
            }
            modelDictionary.Remove(vm.Identifier.Id);
            viewModelDictionary.Remove(vm.Identifier.Id);
            allNodes.Remove(vm);
            if (vm.Parent != null)
            {
                IIdentityTreeItemViewModel <T> parentVM = viewModelDictionary[vm.Parent.Identifier.Id];
                parentVM.RemoveChild(identifier);
            }
            foreach (var item in vm.Target.Children)
            {
                RemoveViewModelFromCollections(item.Identifier);
            }
        }
コード例 #2
0
        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);
            }
        }