首先,抱歉我的英语不好。 我有一个看起来像的EF实体:
class Item
{
public Guid Id { get; set; }
public string Title{ get; set; }
public Guid? ParentId { get; set; }
public ICollection<Item> Items { get; set; }
}
现在我想在树视图上加载来自该实体的数据......我能得到的最好的是跟随xaml:
<TreeView Name="treeItems">
<TreeView.ItemTemplate>
<HierarchicalDataTemplate DataType="{x:Type local:Item}" ItemsSource="{Binding Items}">
<TextBlock Text="{Binding Path=Title}" />
</HierarchicalDataTemplate>
</TreeView.ItemTemplate>
</TreeView>
并使用
加载数据var itens = from it in ctx.Item select it;
treeItems.ItemsSource = itens;
这显然会在树视图中显示数据:
ItemA ItemA1 ItemA2 ItemA1 --repeated node ItemA2 --repeated node
我如何调整(或重写)我的代码,以便树视图以分层方式显示数据,而不重复节点?
答案 0 :(得分:1)
假设已经构建了树的结构,您只需要在层次结构的第一级中包含根项;所以,例如,你要写treeItems.ItemsSource = itens.Where(i => i.ParentId == null)
(可选地后跟ToList())。模板很好。