/// <summary> /// Default constructor that gives full control over the tree srtucture /// </summary> /// <param name="parentFileSystemItem">Parent FileSystemItemModel</param> /// <param name="node">A fileSystemInfo object in the directory tree that describes a folder and its associated files</param> /// <param name="childElements">A collection of <see cref="FileSystemItemModel"/>s describing the subdirectories contained by this fileSystemInfo object</param> public FileSystemItemModel(FileSystemItemModel parentFileSystemItem, FileSystemInfo fileSystemElementInfo, IEnumerable <IFileSystemItemModel> childElements) { this.ParentFileSystemItem = parentFileSystemItem; this.Info = fileSystemElementInfo; this.DisplayName = this.Info?.Name ?? string.Empty; this.ChildFileSystemItems = new ObservableCollection <IFileSystemItemModel>(childElements); this.IsArchive = false; this.Id = Guid.NewGuid(); }
// Uses preorder traversal public static bool TryGetDirectoryElementOf(IFileSystemItemModel currentItemModel, out IFileSystemItemModel directoryItemModel) { directoryItemModel = null; if (currentItemModel.IsDirectory) { directoryItemModel = currentItemModel; return(true); } return(FileSystemItemModel.TryGetDirectoryElementOf(currentItemModel.ParentFileSystemItem, out directoryItemModel)); }