0

首先,对不起我的英语不好。我有一个 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;

这显然会像这样在树视图上显示数据:

项目A
  项目A1
  项目A2
ItemA1 -- 重复节点
ItemA2 -- 重复节点

我如何调整(或重写)我的代码,以便树视图以分层方式显示数据,而没有重复的节点?

4

1 回答 1

1

假设树的结构已经构建好了,你只需要在层次结构的第一层包含根项即可;因此,例如,您将编写treeItems.ItemsSource = itens.Where(i => i.ParentId == null)(可选地后跟 ToList())。模板很好。

于 2010-08-30T07:38:28.310 回答