public object Convert(object value, Type targetType, object parameter, CultureInfo culture) { var path = (string)value; if (path == null) { return(null); } var name = DirectoryStructure.getFileFolderName(path); var image = "images/box.png"; if (string.IsNullOrEmpty(name)) { image = "images/drive.jpg"; } else if (new FileInfo(path).Attributes.HasFlag(FileAttributes.Directory)) { image = "images/sdafs.jpg"; } return(new BitmapImage(new Uri($"pack://application:,,,/{image}"))); }
/// <summary> /// When a folder is expanded, find the subfolder files /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void folder_expanded(object sender, RoutedEventArgs e) { #region initial Checks var item = (TreeViewItem)sender; //if the item contains only dummy data; if (item.Items.Count != 1 || item.Items[0] != null) { return; } //clear dummy data item.Items.Clear(); var fullpath = (string)item.Tag; #endregion //create a blank list //ignoring every issues #region getDirectories var directories = new List <string>(); try { var dirs = Directory.GetDirectories(fullpath); if (dirs.Length > 0) { directories.AddRange(dirs); } } catch { } //for each directory directories.ForEach(directoryPath => { var subItem = new TreeViewItem() { //folderName Header = DirectoryStructure.getFileFolderName(directoryPath), //fullpath Tag = directoryPath }; //add dummy item so we can expand the folder subItem.Items.Add(null); subItem.Expanded += folder_expanded; item.Items.Add(subItem); }); #endregion #region getNewFiles var files = new List <string>(); try { var fs = Directory.GetFiles(fullpath); if (fs.Length > 0) { files.AddRange(fs); } } catch { } //for each directory files.ForEach(filePath => { var subItem = new TreeViewItem() { //folderName Header = DirectoryStructure.getFileFolderName(filePath), //fullpath Tag = filePath }; //add dummy item so we can expand the folder subItem.Items.Add(null); subItem.Expanded += folder_expanded; item.Items.Add(subItem); }); #endregion }