コード例 #1
0
        // gets a certain item in the current tree view nodes collection
        private static TreeNodeViewModel TryFindItem(IEnumerable <TreeNodeViewModel> nodes, TreeNodeViewModel item)
        {
            if (item == null)
            {
                return(null);
            }

            TreeNodeViewModel output;

            output = nodes.Where(n => n.ID == item.ID && n.Type == item.Type).FirstOrDefault();

            if (output != null)
            {
                return(output);
            }

            else
            {
                foreach (var node in nodes)
                {
                    output = TryFindItem(node.Children, item);

                    if (output != null)
                    {
                        return(output);
                    }
                }
            }
            return(null);
        }
コード例 #2
0
        public static ObservableCollection <TreeNodeViewModel> DrawTree(Folder rootfolder,
                                                                        List <Folder> folderlist, TreeNodeViewModel selectedItem)
        {
            // ищем рут
            var root = rootfolder;

            // список детей рута
            var rootFolders = GetChildren(root.ID, folderlist);

            // список файлов в руте
            var rootDocuments = GetChildren(root);

            // массив представлений элеметов дерева
            var viewsArray = new ObservableCollection <TreeNodeViewModel>();

            // рисуем файлы рута
            foreach (var document in rootDocuments)
            {
                viewsArray.Add(new TreeNodeViewModel(document.ID, document.Name, "Document"));
            }

            // обсчитываем и рисуем потомков рута
            foreach (Folder fol in rootFolders)
            {
                viewsArray.Add(DrawNode(fol, folderlist));
            }

            // handle selected item applying
            if (selectedItem != null)
            {
                var item = TryFindItem(viewsArray, selectedItem);

                if (item != null)
                {
                    item.IsSelected = true;
                }
            }

            return(viewsArray);
        }