0
私は混在したクラスのフォルダでツリービューをまとめようとしています。ルートフォルダには、一つのクラスであり、サブフォルダは、このように、他のです:私は余裕だろうサブフォルダが「SubDirectoryItems」の代わりに「DirectoryItem」として検索されているので、私は2つの異なる再帰的な方法を組み合わせるしようとしてきた異なるフォルダクラスのツリービュー
Root Folder #1 <-- DirectoryItem class
--Sub Folder <-- SubDirectoryItem class
----file <-- FileItem class
Root Folder #2 <-- DirectoryItem class
--Sub Folder <-- SubDirectoryItem class
----file <-- FileItem class
そのコードは明確化の欠如のために試みますが、もっと良いアプローチがあるのだろうかと思います。
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;
}
}
}
ここでは混乱しています。あなたは何を探していますか?特定の時点で1つのサブフォルダ(サブフォルダ内に他のフォルダがないようなレベル)のみが存在すると仮定していますか?本質的に;サブフォルダはディレクトリ項目でもあります。 – A3006
いいえ、(パス)のすべての最上位のフォルダを1つのディレクトリクラスタイプにしたいとします。その下にあるものは、ツリーレベルがどれほど深いものであっても、ファイルまたはサブフォルダクラスタイプでなければなりません。私のツリービューでは、トップレベルのディレクトリにはボタンやあらゆる種類のものがあり、データトリガーやivalueconvertersなどのxamlで区別するよりも、これをよりクリーンな方法で行うと考えています。 – ctalley5