0
我想把樹視圖與混合類的文件夾放在一起。根文件夾是一類和子文件夾是另一個,就像這樣:樹視圖與不同的文件夾類
Root Folder #1 <-- DirectoryItem class
--Sub Folder <-- SubDirectoryItem class
----file <-- FileItem class
Root Folder #2 <-- DirectoryItem class
--Sub Folder <-- SubDirectoryItem class
----file <-- FileItem class
我一直在嘗試這樣的子文件夾被稱爲「SubDirectoryItems」而不是「DirectoryItem」我就饒檢索到兩個不同的遞歸方法相結合該代碼嘗試由於缺乏澄清,但我想知道是否有更好的方法?
class ItemProvider
{
public List<Item> GetItems(string path, SearchOption searchOption)
{
var items = new List<Item>();
var dirInfo = new DirectoryInfo(path);
foreach (var directory in dirInfo.GetDirectories("*.*", SearchOption.TopDirectoryOnly))
{
var item = new DirectoryItem
{
Name = directory.Name,
Path = directory.FullName,
Items = GetItems(directory.FullName, SearchOption.AllDirectories)
};
items.Add(item);
}
foreach (var subdirectory in dirInfo.GetDirectories("*.*", SearchOption.TopDirectoryOnly))
{
var item = new SubDirectoryItem()
{
Name = subdirectory.Name,
Path = subdirectory.FullName,
Items = GetItems(subdirectory.FullName, SearchOption.AllDirectories)
};
items.Add(item);
}
foreach (var file in dirInfo.GetFiles())
{
var item = new FileItem
{
Name = file.Name,
Path = file.FullName
};
items.Add(item);
}
return items;
}
}
}
我很困惑這裏。你究竟在尋找什麼?你是否假設在任何給定的時間點只有一個子文件夾(在子文件夾內沒有其他文件夾級別)?本質上;子文件夾也是一個目錄項。 – A3006
不,我想在(路徑)中創建一個目錄類類型的所有頂級文件夾。無論樹層級有多深,任何東西都應該是文件或子文件夾類的類型。在我的樹形視圖中,頂級目錄將會有按鈕和各種東西,我認爲這將是一種更簡潔的方式,而不是用xaml與數據觸發器和ivalueconverters以及其他東西區分它。 – ctalley5