コード例 #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 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);
            }
        }
コード例 #3
0
 public void AddChild(IIdentityTreeItemViewModel <T> child)
 {
     if (!chidViewModels.ContainsKey(child.Identifier.Id))
     {
         child.Parent = this;
         chidViewModels.Add(child.Identifier.Id, child);
         children.Add(child);
     }
 }
コード例 #4
0
 public void RemoveChild(IIdentifier childIdentifier)
 {
     if (chidViewModels.ContainsKey(childIdentifier.Id))
     {
         IIdentityTreeItemViewModel <T> child = chidViewModels[childIdentifier.Id];
         child.Parent = null;
         chidViewModels.Remove(childIdentifier.Id);
         children.Remove(child);
     }
 }
コード例 #5
0
        public int Compare(object x, object y)
        {
            IIdentityTreeItemViewModel <T> a = x as IIdentityTreeItemViewModel <T>;
            IIdentityTreeItemViewModel <T> b = y as IIdentityTreeItemViewModel <T>;

            if (a != null && b != null)
            {
                AlphanumStringComparatorFast comp = new AlphanumStringComparatorFast();
                return(comp.Compare(a.Name, b.Name));
            }
            return(-1);
        }
コード例 #6
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);
            }
        }
コード例 #7
0
 private void OnViewModelSelected(object sender, EventArgs e)
 {
     SelectedTreeItem = sender as IIdentityTreeItemViewModel <T>;
 }
コード例 #8
0
        private void OnViewModelExpanded(object sender, EventArgs e)
        {
            IIdentityTreeItemViewModel <T> vm = sender as IIdentityTreeItemViewModel <T>;

            treeManager.RefreshChildren(modelDictionary[vm.Identifier.Id]);
        }