0
혼합 클래스 폴더가있는 트리 뷰를 함께 가져 오려고합니다. 루트 폴더는 하나 개의 클래스와 하위 폴더는 다음과 같이 또 다른입니다됩니다다른 폴더 클래스가있는 Treeview
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"대신 "디렉토리 항목은"나는 여분의 것으로 검색되도록 두 개의 서로 다른 재귀 방법을 결합하는 시도했습니다 그 코드 시도의 명확성 부족으로 인해,하지만 더 나은 접근 방법이 궁금해?
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
아니요, (경로)의 모든 최상위 폴더를 하나의 디렉토리 클래스 유형으로 만들고 싶습니다. 그 아래에있는 것은 트리 레벨이 얼마나 깊은 지 상관없이 파일 또는 하위 폴더 클래스 유형이어야합니다. 내 treeview에서 최상위 디렉토리는 버튼과 모든 종류의 것들을 가지고 있으며 데이터 트리거 및 ivalueconverters 및 물건 xaml에서 차별화하는 데보다 깨끗한 방법이 될 것이라고 생각합니다. – ctalley5