我有一个有父母和儿童属性的课程。

ADO.NET实体框架分层页面类http://img148.imageshack.us/img148/6802/edmxxe8.gif

我想在WPF树视图中显示此层次结构。

这是我的XAML ......

<TreeView Margin="12" Name="TreeViewPages" ItemsSource="{Binding}">
    <TreeView.ItemTemplate>
        <HierarchicalDataTemplate ItemsSource="{Binding Children}">
            <TextBlock Text="{Binding Path=ShortTitle}" />
        </HierarchicalDataTemplate>
    </TreeView.ItemTemplate>
</TreeView>

我的VB代码......

Dim db As New PageEntities
Dim t = From p In db.Page.Include("Children") _
        Where p.Parent Is Nothing _
        Select p
TreeViewPages.ItemsSource = t

但后来我只得到了两层深的树。为了让这个工作,我需要做什么?

一般承认的答案

这不起作用的原因是您只为TreeView指定DataTemplate。由于它生成的TreeViewItems也是ItemsControls,因此它们也需要设置ItemTemplate。

实现您希望的最简单方法是将HierarchicalDataTemplate放在TreeView(或其任何父视觉)的资源中,并设置HierarchicalDataTemplate的DataType,以便将其应用于所有项目。

在容器的声明(很可能是窗口)中,您需要定义到定义页面的命名空间的映射。

例如

<Window ...
    xmlns:local="clr-namespace:NamespaceOfPageClass;assembly=AssemblyWherePageIsDefined">

<TreeView Margin="12" Name="TreeViewPages" ItemsSource="{Binding}" />
    <TreeView.Resources>
        <HierarchicalDataTemplate DataType=”{x:Type local:Page}” ItemsSource="{Binding Children}">
            <TextBlock Text="{Binding Path=ShortTitle}" />
        </HierarchicalDataTemplate>
    </TreeView.Resources>
</TreeView>



许可下: CC-BY-SA with attribution
不隶属于 Stack Overflow
这个KB合法吗? 是的,了解原因
许可下: CC-BY-SA with attribution
不隶属于 Stack Overflow
这个KB合法吗? 是的,了解原因