// override event for fill child
 protected override void OnExpanded(RoutedEventArgs e)
 {
     base.OnExpanded(e);
     foreach (object obj in Items)
     {
         DirectoryTreeViewItem item = obj as DirectoryTreeViewItem;
         item.Populate();
     }
 }
Ejemplo n.º 2
0
        public void RefreshTree()
        {
            BeginInit();
            Items.Clear();

            // get drive's info
            DriveInfo[] drives = DriveInfo.GetDrives();
            foreach(DriveInfo drive in drives)
            {
                char chDrive = drive.Name.ToUpper()[0];
                DirectoryTreeViewItem item = new DirectoryTreeViewItem(drive.RootDirectory);

                if (chDrive != 'A' && chDrive != 'B' && drive.IsReady && drive.VolumeLabel.Length > 0)
                    item.Text = String.Format("{0} ({1})", drive.VolumeLabel, drive.Name);
                else
                    item.Text = String.Format("{0} ({1})", drive.DriveType, drive.Name);

                // drive image
                if (chDrive == 'A' || chDrive == 'B')
                    item.SelectedImage = item.UnselectedImage =
                        new BitmapImage(
                            new Uri("pack://application:,,/Images/FloppyDrive_16x.png"));
                else if (drive.DriveType == DriveType.CDRom)
                    item.SelectedImage = item.UnselectedImage =
                        new BitmapImage(
                            new Uri("pack://application:,,/Images/CDDrive_16x.png"));
                else if (drive.DriveType == DriveType.Ram)
                    item.SelectedImage = item.UnselectedImage =
                        new BitmapImage(
                            new Uri("pack://application:,,/Images/Memory_16x.png"));
                else if (drive.DriveType == DriveType.Removable)
                    item.SelectedImage = item.UnselectedImage =
                        new BitmapImage(
                            new Uri("pack://application:,,/Images/Release_16x.png"));
                else if (drive.DriveType == DriveType.Unknown)
                    item.SelectedImage = item.UnselectedImage =
                        new BitmapImage(
                            new Uri("pack://application:,,/Images/UnknownProject_16x.png"));
                else if (drive.DriveType == DriveType.Fixed)
                    item.SelectedImage = item.UnselectedImage =
                        new BitmapImage(
                            new Uri("pack://application:,,/Images/HardDrive_16x.png"));
                else
                    item.SelectedImage = item.UnselectedImage =
                        new BitmapImage(
                            new Uri("pack://application:,,/Images/Question_16x.png"));

                Items.Add(item);

                // fill directories info
                if (chDrive != 'A' && chDrive != 'B' && drive.IsReady)
                    item.Populate();
            }
            EndInit();
        }