さて、ツリーであることとは別に、いくつかの基礎となるデータがあります。たとえば、ディレクトリツリー。ディレクトリの属性は、その名前と子ディレクトリのリストです。ジェネリックを定義することから始めTreeItem
ます。
public class TreeItem<T> {
public TreeItem() {
Children = new List<TreeItem<T>>();
}
public void AddChild(T data) {
Children.Add(new TreeItem<T>{Data = data, Parent = this});
}
public List<TreeItem<T>> Children{get;set;}
public TreeItem<T> Parent {get;set;}
public T Data {get;set;}
}
したがって、単純なディレクトリツリーは単なるTreeItem<string>
:です。
var directories = new TreeItem<string> { Data="root" };
directories.AddChild("child1");
directories.AddChild("child2");
directories.AddChild("child3");
これにより、次のようなツリーが作成されます。
root
|- child1
|- child2
|- child3
完全に汎用的なツリービューを作成する唯一の方法は、現在のノード、上のノード、およびすべての子ノードに同じタイプを設定することです。それ以外の場合は、コンパイル時に構造を修正し、設定された階層のみをサポートする必要があります。