文件夹浏览器列出WPF中的所有系统驱动器

我在WPF中创建了一个FOLDER BROWSER控件,并且工作正常,但只有一个驱动器,我硬编码。

我遵循的文件是:

http://msdn.microsoft.com/en-us/library/bb546972%28v=vs.90%29.aspx

我想让它在树视图中列出系统中的所有驱动器,而不是仅列出一个。

              SubFolders     

如果我在后面的代码中填充树视图,我的所有其他代码都会破坏..

有关如何将此列表设为所有驱动器的任何建议都将非常有用。

首先,我们需要一个新的类,称之为“DriveExplorer”。 我保留链接样本中的“文件夹”名称,您可能需要将其替换为“FolderExplorer”。

一,代码:

 public class DriveExplorer { private ObservableCollection _folders; public ObservableCollection Folders { get { _folders = new ObservableCollection(); DriveInfo[] drives = DriveInfo.GetDrives(); foreach (DriveInfo drive in drives) { //We only want drives with folders, "Fixed" is hard drives if (drive.DriveType == DriveType.Fixed) { Folder newFolder = new Folder(); newFolder.FullPath = drive.Name; _folders.Add(newFolder); } } } } } 

现在它做了什么。 就像“文件夹”一样,我们声明一个ObservableCollection来存储我们的“驱动器”。对于所有意图和目的,驱动器只是我们以不同方式获得的文件夹。 然后,我们使用DriveInfo.GetDrives()获取系统上的驱动器列表。

然后,我们使用foreach迭代整个集合(这与示例代码中的for循环完全相同),使用“drive”作为迭代变量( MSDN )。 我假设我们只想要硬盘,所以我们检查DriveType是否为“Fixed”。 如果我们不关心类型,可以删除此检查。 有关此function的完整参考,请参阅MSDN 。 最后,我们创建一个新的“文件夹”,其路径设置为驱动器号,就像在XAML中一样(并且示例在其构造函数中执行)。

现在对于XAML,我们需要一个与您已有的数据模板非常相似的数据模板(这是现有的):

    

然后我们只需要将数据源更改为“DriveExplorer”:

      

这应该为您提供所需的输出。 如果我需要进行任何更正或澄清任何事情,请告诉我!