好吧,除了是一棵树之外,您还将拥有一些基础数据。例如目录树。目录的属性是它的名称和子目录的列表。我们从定义一个泛型开始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
制作完全通用树视图的唯一方法是使当前节点、上层节点和所有子节点具有相同的类型,否则您必须在编译时修复结构并且仅支持设置的层次结构。