コード例 #1
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);
            }
        }
コード例 #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);
            }
        }