具有循环类型引用的树的TreeView模板
本文关键字:TreeView 模板 引用 类型 循环 循环类 | 更新日期: 2023-09-27 18:19:47
我需要显示一个绑定到这种层次对象的树:
public class Node
{
public string Name
public List<Connector> Connector;
}
public class Connector
{
public string Name
public List<Node> TrueChildren;
}
因此一个节点的实际子节点在另一个对象中。
无法制作TreeView模板来使用它。似乎我需要循环模板,这在WPF中是不可能的。我觉得我错过了一些显而易见的东西。
这不一定是循环的,只有当Connector.Children
包含对当前节点路径上更高级别节点的引用时,它才是循环的(即使这样也应该可以使用虚拟化来处理)。
通常,您只需要在TreeView
的资源中创建两个HierarchicalDataTemplates
,而不需要任何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
非常重要)