树的TreeView模板与圆型参考

时间:2012-01-07 23:18:43

标签: c# wpf c#-4.0

我需要显示绑定到这种分层对象的树:

public class Node
{
    public string Name
    public List<Connector> Connector;
}

public class Connector
{
    public string Name
    public List<Node> TrueChildren;
}

所以节点的实际子节点在另一个对象中。

无法使TreeView模板与它一起使用。好像我需要循环模板,这在WPF中是不可能的。我觉得我错过了一些明显的东西。

1 个答案:

答案 0 :(得分:2)

这不一定是循环的,如果Connector.Children包含对当前节点路径上更高的节点的引用(即使应该可以使用虚拟化以某种方式处理),它也只是循环的。

通常,您只需要在HierarchicalDataTemplates的资源中创建两个TreeView,而不是x:Key,但DataType设置为相应的类型。

<TreeView.Resources>
    <HierarchicalDataTemplate DataType="{x:Type local:Node}"
                              ItemsSource="{Binding Connector}">
        <TextBlock Text="{Binding Name}"/>
    </HierarchicalDataTemplate>

    <HierarchicalDataTemplate DataType="{x:Type local:Connector}"
                              ItemsSource="{Binding TrueChildren}">
        <TextBlock Text="{Binding Name}"/>
    </HierarchicalDataTemplate>
<TreeView.Resources>

(在DataType中使用x:Type非常重要,如果您想知道为什么阅读property reference