using System; using System.Collections.Generic; using System.IO; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows; using System.Windows.Controls; using System.Windows.Data; using System.Windows.Documents; using System.Windows.Input; using System.Windows.Media; using System.Windows.Media.Imaging; using System.Windows.Navigation; using System.Windows.Shapes; namespace TreeViewSample { /// /// Interaction logic for MainWindow.xaml /// public partial class MainWindow : Window { public MainWindow() { InitializeComponent(); InitInstance(); } private void InitInstance() { DriveInfo[] drives = DriveInfo.GetDrives(); foreach (DriveInfo drive in drives) { trvStructure.Items.Add(CreateTreeItem(drive)); } } private TreeViewItem CreateTreeItem(object obj) { TreeViewItem item = new TreeViewItem(); item.Header = obj.ToString(); item.Tag = obj; item.Items.Add("Loading..."); return item; } private void trvStructure_Expanded(object sender, RoutedEventArgs e) { TreeViewItem item = e.Source as TreeViewItem; if (item.Items.Count != 1 || !(item.Items[0] is string)) return; item.Items.Clear(); DirectoryInfo expandedDir = null; if (item.Tag is DriveInfo) expandedDir = (item.Tag as DriveInfo).RootDirectory; if (item.Tag is DirectoryInfo) expandedDir = (item.Tag as DirectoryInfo); try { foreach (DirectoryInfo subDir in expandedDir.GetDirectories()) item.Items.Add(CreateTreeItem(subDir)); } catch (Exception ex) { MessageBox.Show(ex.Message); } } } }