public void UpdateChildren() { Nodes.Clear(); var baseDir = Path.GetDirectoryName(Project.FileName); // First add observed directories foreach (var d in Project.SubDirectories) { DirectoryNode.CheckIfSubDirExists(this, d.StartsWith(baseDir) ? d.Substring(baseDir.TrimEnd(Path.DirectorySeparatorChar).Length + 1) : d); } // Then add modules/files foreach (var f in from m in Project.Files select m.FileName) { // Create directory node var fDir = Path.IsPathRooted(f)?"": Path.GetDirectoryName(f); var dirNode = DirectoryNode.CheckIfSubDirExists(this, fDir); var fnode = new FileNode() { FileName = Path.GetFileName(f) }; fnode.Tag = f; fnode.SelectedImageKey = fnode.ImageKey = GetFileIconKey(f); dirNode.Nodes.Add(fnode); } }