Example #1
0
        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
        }