我需要将平面结构转换为分层结构。我的架构如下:
我得到每个项目的级别和父级,并希望将此结构添加到可观察的集合中以在我的xaml中加载菜单控件
=======
在C#中执行此操作的简单方法是什么?
答案 0 :(得分:0)
您可以创建如下的层次结构:
class Item
{
public List<Item> Childs {get; set;}
// other properties and methods
}
如果您需要具有不同类型子对象的更复杂层次结构,则可以使用复合模式:http://en.wikipedia.org/wiki/Composite_pattern
答案 1 :(得分:0)
这并不容易。我一直在编码Winforms树视图。有几个代码块,所有代码都很大。
我创建了一个名为ParentItem的类,在ParentItem中是一个名为Children的ParentItem的集合。简而言之,每个元素必须能够包含其自身的进一步实例的列表。
所以在某些时候你可能会看到这样的代码:
ParentNode x1 = new ParentNode(1, "Item1"); // constructor contains record Id field and descriptive text
x1.Children.Add(new ParentNode(1, "ChildItem1"); // under the presumption the record Id is for a different table
x1.Children[0].Children[0].Add(new ParentNode(7, "ChildItem7"); // third level, not 5th level as in your example
当您向treeview控件添加节点时,您将把孩子们带到孩子的孩子身上。
这是一个简短的想法,实际实施涉及更多。