在WPF中展平TreeView

时间:2010-11-19 21:14:03

标签: wpf treeview

我有一些层次结构,我想在TreeView中显示,但格式化为看起来像ListBox。

我的数据看起来像这样(可能有任意数量的子级别):

Item 1
  Child 1
  Child 2
Item 2
  Child 3
  Child 4

我希望数据显示如下(并在需要时换行):

Item 1 Child 1 Child 2 Item 2 Child 3 Child 4

我想使用TreeView,因此我可以维护父项和子项之间的关系,这就是我不想使用ListBox的原因。 谢谢!

2 个答案:

答案 0 :(得分:1)

听起来您遇到的问题是您的数据结构和视图之间没有明确的分离。如果你有一棵不是WPF的树,那么将树视图映射到它上应该很容易。如果您有一棵树,则可以创建一个可以在列表视图中使用的树节点分子。

通过这样做,关系永远不会改变 - 只是如何在UI中投射数据。

答案 1 :(得分:0)

我认为最好的方法是实现一个递归函数,它将向下滚动树直到它结束。该函数将引用列表或集合作为参数和当前节点。

这是它的伪代码

Sub GenerateListFromTree(Node oNode, List oList)

AddItemToList(oNode.Name)

For each Node oChildNode in oNode.Nodes
    GenerateListFromTree(oChildNode,oList)
Next

AddItemToList(oNode.Name) For each Node oChildNode in oNode.Nodes GenerateListFromTree(oChildNode,oList) Next