private void ListViewItem_OnDoubleClick(object sender, MouseButtonEventArgs e) { e.Handled = true; if (!(sender is ListViewItem currentNode)) { return; } if (!(currentNode.Content is FileSystemObject content)) { return; } TemplateType = content.Type == (int)ObjectType.Computer ? 0 : 1; if (content.Type == (int)ObjectType.Directory || content.Type == (int)ObjectType.Drive) { ExplorerView.Items.Clear(); foreach (var childDirectory in FileSystemExplorerService.GetChildDirectories(content.Path)) { ExplorerView.Items.Add(new FileSystemObject(childDirectory)); } foreach (var childFile in FileSystemExplorerService.GetChildFiles(content.Path)) { ExplorerView.Items.Add(new FileSystemObject(childFile)); } } else if (content.Type == (int)ObjectType.File) { Process.Start(@content.Path); } }
public object Convert(object value, Type targetType, object parameter, CultureInfo culture) { try { if (!(value is FileSystemObject objectToExpand)) { return(null); } if (objectToExpand.Type == (int)ObjectType.Computer) { return(FileSystemExplorerService.GetRootDirectories() .Select(driveInfo => new FileSystemObject(driveInfo)).ToList()); } else if (objectToExpand.Type == (int)ObjectType.Workspace) { return(null); } else { return(FileSystemExplorerService.GetChildDirectories(objectToExpand.Path) .Select(directoryInfo => new FileSystemObject(directoryInfo)).ToList()); } } catch { return(null); } }
private void TreeViewItem_MouseLeftButtonUp(object sender, MouseButtonEventArgs e) { e.Handled = true; var currentNode = sender as TreeViewItem; ExplorerView.Items.Clear(); if (!(currentNode?.Header is FileSystemObject parent)) { return; } TemplateType = parent.Type == (int)ObjectType.Computer ? 0 : 1; if (currentNode.ItemsSource == null) { return; } if (parent.Type == (int)ObjectType.Computer) { foreach (var rootDirectory in FileSystemExplorerService.GetRootDirectories()) { ExplorerView.Items.Add(new FileSystemObject(rootDirectory)); } } else { foreach (var childDirectory in FileSystemExplorerService.GetChildDirectories(parent.Path)) { ExplorerView.Items.Add(new FileSystemObject(childDirectory)); } foreach (var childFile in FileSystemExplorerService.GetChildFiles(parent.Path)) { ExplorerView.Items.Add(new FileSystemObject(childFile)); } } }