Zac*_*son 8 .net linq data-binding wpf entity-framework
我有一个有父母和儿童属性的课程.
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>
Run Code Online (Sandbox Code Playgroud)
我的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
但后来我只得到了两层深的树.为了让这个工作,我需要做什么?
Abe*_*cht 11
这不起作用的原因是您只为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>
Run Code Online (Sandbox Code Playgroud)