我有一個有父母和兒童屬性的課程。

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合法嗎? 是的,了解原因