C# 具有MVVM结构的视图树中的文件夹视图?

C# 具有MVVM结构的视图树中的文件夹视图?,c#,mvvm,C#,Mvvm,我在一个名为data的项目中有三个文件,该项目是VisualStudio中的一个数据库。我观看了一个名为MVVM教程c的教程和一个文件树!这是链接:大约12:19,他写了这行代码 return GetLogicalDrives().Select(drive => new DirectoryItem { fullPath = drive, Type = DirectoryItemType.Drive }).ToList(); 这段代码对我不起作用,我知道我没有Directory.GetL

我在一个名为data的项目中有三个文件,该项目是VisualStudio中的一个数据库。我观看了一个名为MVVM教程c的教程和一个文件树!这是链接:大约12:19,他写了这行代码

return GetLogicalDrives().Select(drive => new DirectoryItem { fullPath = drive, Type = DirectoryItemType.Drive }).ToList(); 
这段代码对我不起作用,我知道我没有Directory.GetLogicalDrives,但这不是我的文件夹视图的样子,所以他在视频中使用的三个不同文件的名称空间是数据,这是我在这三个文件中的代码

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace Data
{
    public static  class DirectoryStructure
    {
        public static List<DirectoryItem> GetLogicalDrives()
        {
           return GetLogicalDrives().Select(drive => new DirectoryItem { fullPath = drive, Type = DirectoryItemType.Drive }).ToList(); 
        }

        public static string GetFilefolderName(string path)
        {
            if(string.IsNullOrEmpty(path))
            {
                return string.Empty;    
            }

            var normalizedPath = path.Replace('/', '\\');    
            var lastIndex = normalizedPath.LastIndexOf('\\');

            if(lastIndex <= 0)
            {
                return path; 
            }

            return path.Substring(lastIndex + 1);   
        }
    }

    public class DirectoryItem
    {
        public DirectoryItemType Type { get; set;}
        public string fullPath { get; set; }
        public string Name { get { return DirectoryStructure.GetFilefolderName(this.fullPath); } }  
    }

    public enum DirectoryItemType
    {
        Drive,
        File, 
        Folder
    }
}

我不知道为什么我会从那一行得到一个错误?我的文件夹结构类似于此项目:Data\Directory在此文件夹中,我有DirectoryStructure,其余文件位于同一文件路径下,但还有一个名为DataFolder的文件夹。有人知道为什么这对我不起作用吗?

您的代码中有两个问题:

您的GetLogicalDrives方法在其主体中调用自身,它将无法使用您的逻辑,因为没有可浏览的列表

文件中缺少using指令。若要访问Directory类,然后调用GetLogicalDrivers方法,必须使用文件顶部的System.IO添加该方法


我希望这会对您有所帮助。

Try Environment.GetLogicalDrivesI我想我是在自己调用它,但如果您在我给您的时间代码的准确时间查看视频,他会这样做吗?在视频中,它不是自己调用的,而是从目录类将调用委托给具有相同名称的方法。我认为您不应该正确地看到它,他这样做:return Directory.GetLogicalDrives.Selectdrive=>newdirectoryitem{fullPath=drive,Type=DirectoryItemType.drive}.ToList;是的,他引用了目录,但我没有看到他在任何时候创建的那个文件,或者我的意思是,我没有看到他在任何时候创建的类现在我明白你说的了,我不明白,你的意思是它是system.io库的一部分