【问题标题】:Linq query to treeview HierarchicalDataTemplateLinq 查询树视图 HierarchicalDataTemplate
【发布时间】:2010-08-30 00:01:41
【问题描述】:

首先,对不起我的英语不好。 我有一个看起来像这样的 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 -- 重复节点

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

【问题讨论】:

    标签: wpf treeview hierarchicaldatatemplate


    【解决方案1】:

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

    【讨论】:

    • 哇...这太明显了:/ ...起初我认为 where 子句不会加载非空项...在 SQL/Winform 中考虑太多而在 EF 中考虑得很少/WPF 我猜...谢谢你的帮助 :)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-09-05
    • 2012-08-06
    • 2015-01-28
    • 1970-01-01
    • 1970-01-01
    • 2017-02-08
    • 1970-01-01
    相关资源
    最近更新 更多