private TVMlevel GetDirectoryNodes(string path, string parent) { var node = new TVMlevel { Name = path.Split('\\').LastOrDefault(), CompletePath = path, Parent = parent, Children = new ObservableCollection <TVMlevel>(), }; var subDirs = Directory.GetDirectories(path).Select(d => GetDirectoryNodes(d, string.Join("\\", d.Split('\\').Reverse().Skip(1).Reverse()))).ToArray(); foreach (var d in subDirs) { node.Children.Add(d); } return(node); }
private void CreateTreeviewItems() { var tmpDirs = Directory.GetDirectories(MyImgDirectory.path, "*", SearchOption.AllDirectories).ToList(); // para los directorios de un mismo nivel //Dictionary<int, List<string>> dirsLevel = new Dictionary<int, List<string>>(); //var tmpLvls = tmpDirs.Select(d => d.Split('\\').Count()).OrderBy(o => o).ToList(); //for (int i = 0; i < tmpDirs.Count(); i++) //{ // var currentLvl = tmpLvls[i]; // var dirsList = tmpDirs.Where(d => d.Split('\\').Count() == currentLvl).ToList(); // dirsLevel.Add(currentLvl, dirsList); // // para saltarnos lo iguales le sumamos la cantidad de añadidos y le restamos uno para la próxima vuelta // i += dirsList.Count - 1; //} TVMlevel tmpLvl = new TVMlevel(); tmpLvl = GetDirectoryNodes(MyImgDirectory.path, "root"); //int index = dirsLevel.First().Key; //for (int i = 0; i < dirsLevel.Count; i++) //{ // var lvl = dirsLevel.Where(x => x.Key == index + i).FirstOrDefault().Key; // var dirs = dirsLevel.Where(x => x.Key == index + i).FirstOrDefault().Value; // var predecessors = dirsLevel.Where(x => x.Key == index + i - 1).FirstOrDefault().Value; //} TreeViewModel tvm = new TreeViewModel { Children = new ObservableCollection <TVMlevel>() { tmpLvl, } }; TvContent = tvm; }