我需要显示绑定到这种分层对象的树:
public class Node
{
public string Name
public List<Connector> Connector;
}
public class Connector
{
public string Name
public List<Node> TrueChildren;
}
所以节点的实际子节点在另一个对象中。
无法使TreeView模板与它一起使用。好像我需要循环模板,这在WPF中是不可能的。我觉得我错过了一些明显的东西。
答案 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)