2012-08-30 93 views
1

我有三个链接的实体(Categories-> Types-> Classes),具有一对多关系。 是否有可能只绑定分类实体,并使用导航属性和HierarchicalDataTemplate来表示其余的?
我想是这样的:TreeView具有导航属性的HierarchicalDataTemplate EntityFramework

<TreeView ItemsSource="{Binding Categories}"> 

      <TreeView.ItemTemplate> 

       <HierarchicalDataTemplate ItemsSource="{Binding Categories}" > 
        <TextBlock Foreground="Red" Text="{Binding Types}" /> 

        <HierarchicalDataTemplate.ItemTemplate> 
         <HierarchicalDataTemplate ItemsSource="{Binding Classes}"> 
          <TextBlock Text="{Binding TypeName}" /> 

          <HierarchicalDataTemplate.ItemTemplate> 
           <DataTemplate > 
            <TextBlock Text="{Binding ClassName}" /> 
           </DataTemplate> 
          </HierarchicalDataTemplate.ItemTemplate> 

         </HierarchicalDataTemplate> 

        </HierarchicalDataTemplate.ItemTemplate> 

       </HierarchicalDataTemplate> 
      </TreeView.ItemTemplate> 

     </TreeView> 
+0

那是伪?你没有设置数据类型和其他东西。 WPF或winforms?无论哪种方式,虽然概念上,是的,它会工作,但你的实施是有点关闭:) –

+0

谢谢,我的执行只是一个草案的原因,我仍然要求的可能性 – HichemSeeSharp

+0

然后是的,你绝对可以做到这一点! –

回答

1

我最近做了,一个WPF项目,我已经更新,以符合您的名字和导航属性的类型。

您可能需要考虑改变类型/类更具体的,因为他们已经习惯在C#语言的关键字的东西,但我觉得你的想法

<!-- The Root Category Table --> 
      <HierarchicalDataTemplateDataType="{x:Type Entities1:Categories}" ItemsSource="{Binding Types}" > 
       <StackPanel Orientation="Horizontal"> 
       <Image Name="img" Source="{Binding ., Converter={Converters:DataTypeImageConverter}}" /> 
       <TextBlock Text="{Binding CategoryName}" FontWeight="Bold" /> 
       </StackPanel> 
      </HierarchicalDataTemplate> 
      <!-- Your Type Table --> 
      <HierarchicalDataTemplate DataType="{x:Type Entities1:Type}" ItemsSource="{Binding Classes}" > 
       <StackPanel Orientation="Horizontal"> 
       <Image Name="img" Source="{Binding ., Converter={Converters:DataTypeImageConverter}}" /> 
       <TextBlock Text="{Binding TypeName}" /> 
       </StackPanel> 
      </HierarchicalDataTemplate> 
      <!-- Your Class Table--> 
      <DataTemplate DataType="{x:Type Entities1:Class}"> 
       <StackPanel Orientation="Horizontal"> 
       <Image Name="img" Source="{Binding ., Converter={Converters:DataTypeImageConverter}}" /> 
       <TextBlock Text="{Binding ClassName}" /> 
       </StackPanel> 
      </DataTemplate> 

这将完成,它将匹配树中的数据类型 - 如果它匹配Category,它将创建堆栈面板,然后使用导航集合Types启动另一个分支。

对于types,它将执行相同的基本操作 - 为该项目创建面板,然后为其导航集合Class创建另一个分支。

如果是class,这只会造成面板,因为它是一个DataTemplate,而不是一个HierarchicalDataTemplate

+0

- 这是一个很棒的答案。但是,如何在不显示错误“ItemTemplate设置多次”的情况下将这些'HierarchicalDataTemplate'添加到树的ItemsSource?谢谢! – Rachael

相关问题