You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
72 lines
2.0 KiB
72 lines
2.0 KiB
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
|
|
{
|
|
/// <summary>
|
|
/// Interaction logic for MainWindow.xaml
|
|
/// </summary>
|
|
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);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|