예제 #1
0
    protected override TreeViewItem BuildRoot()
    {
        FolderTreeViewItem root = new FolderTreeViewItem {
            id = 0, depth = -1, displayName = "Root"
        };

        var rows = GetFolderRows();

        if (allPath == null)
        {
            return(root);
        }
        foreach (var p in allPath)
        {
            string[] items = p.Split('/');


            string fullPath = "";
            for (int i = 0; i < items.Length; i++)
            {
                string displayName = items[i];
                if (string.IsNullOrEmpty(fullPath))
                {
                    fullPath = displayName;
                }
                else
                {
                    fullPath += "/" + displayName;
                }

                bool isDirectory = !(i == (items.Length - 1));

                bool isHaveItem = false;
                foreach (var item in rows)
                {
                    if (item.fullPath == fullPath && item.isDirectory == isDirectory)
                    {
                        isHaveItem = true;
                        break;
                    }
                }

                if (!isHaveItem)
                {
                    FolderTreeViewItem temp   = new FolderTreeViewItem(index, i, displayName, fullPath, isDirectory);
                    string             dir    = Path.GetDirectoryName(fullPath);
                    FolderTreeViewItem parent = null;
                    foreach (var item in rows)
                    {
                        if (item.fullPath == dir && item.isDirectory)
                        {
                            parent = item;
                            break;
                        }
                    }
                    if (parent != null)
                    {
                        parent.AddChild(temp);
                    }
                    else
                    {
                        root.AddChild(temp);
                    }
                    rows.Add(temp);
                    index++;
                }
            }
        }
        List <TreeViewItem> list = new List <TreeViewItem>();

        foreach (var item in rows)
        {
            list.Add(item);
        }

        //SetupParentsAndChildrenFromDepths(root, list);
        foreach (var item in rows)
        {
            if (item.hasChildren)
            {
                item.icon = folderIcon;
            }
            else
            {
                item.icon = fileIcon;
            }
        }
        return(root);
    }