2008-11-07 165 views
0

我有一个Parent和Children属性的类。WPF TreeView绑定

ADO.NET Entity Framework Hierarchical Page Class http://img148.imageshack.us/img148/6802/edmxxe8.gif

我想在一个WPF树视图来显示这个层次。

这里是我的XAML ...

<TreeView Margin="12" Name="TreeViewPages" ItemsSource="{Binding}"> 
    <TreeView.Resources> 
     <HierarchicalDataTemplate DataType="{x:Type Page}" ItemsSource="{Binding Children}"> 
      <TextBlock Text="{Binding Path=ShortTitle}" /> 
     </HierarchicalDataTemplate> 
    </TreeView.Resources> 
</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 

,但我得到一棵树,一个非模板项目:

 
PageManager.Page 

我需要做些什么来实现这个功能?

+0

查看相关问题:http://stackoverflow.com/questions/269523/how-do-i-use-a-wpf-treeview-hierarchicaldatatemplate-with-linq-to-entities#273535 – 2008-11-07 20:28:19

回答

1

您需要在XAML文件中为您的Page类定义一个xmlns映射并将其用于Type声明中。您没有收到编译错误的原因是Page类已经在WPF中定义。

所以,如果你的Page类是在扎克命名空间中定义,在TreeViewBinding装配,则需要添加以下声明父容器(最有可能的窗口):

xmlns:local="clr-namespace:Zack;assembly=TreeViewBinding" 

然后修改您的DataTemplate如下:

<HierarchicalDataTemplate DataType="{x:Type local:Page}" ItemsSource="{Binding Children}"> 

我会澄清我的文章,为您原来的问题。

+0

上一个问题:http: //stackoverflow.com/questions/272854/wpf-treeview-binding – 2008-11-07 19:50:59