2012-08-30 97 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

相關問題