2011-10-27 58 views
1

我正在嘗試創建一個報表treeview事物。在哪裏我可以寫一些文本作爲父節點,如果需要的話,我會添加添加字符串作爲子節點來顯示更多信息。將Treeview綁定到WPF中的同一對象列表中的對象

我做了彙報對象:

public class Report 
{ 
    private List<Report> reportList = new List<Report>(); 

    public string Text { get; set; } 
    public List<Report> Reports 
    { 
     get 
     { 
      return reportList; 
     } 
     set 
     { 
      reportList = value; 
     } 
    } 
} 

然後我會寫一個報告收集,我會再送入一個TreeView的ItemsSource,但我不知道如何創建綁定,這樣它會創建子節點正常throughtout,我試圖搜索谷歌,但我找不到正確的方法。

任何人都可以幫我嗎?

回答

2

你需要使用一個HierarchicalDataTemplate

<TreeView ItemsSource="{Binding Reports}"> 
    <TreeView.Resources> 
     <HierarchicalDataTemplate DataType="{x:Type local:Report}" ItemsSource="{Binding Reports}"> 
      <TextBlock Text="{Binding Text}" /> 
     </HierarchicalDataTemplate> 
    </TreeView.Resources> 
</TreeView> 
+0

哦,我...我想我這樣做了,但我想我一定是搞砸綁定什麼的。謝謝一堆。我可能會問一個後續?假設我有一個人物:姓名,姓氏,地址,性別,身高。在父節點中,您只需要顯示名字和姓氏,但在子節點中,他們將擁有所有信息(各種主要細節),因此我無法使用分層數據來處理該權限? –

+1

@Xenoxsis:根據樹中元素的類型(不區分不同級別的相同類型的元素)使用'DataType'屬性來選擇'HierarchicalDataTemplate',你可以使用'ItemTemplate'屬性來爲下一個級別指定另一個'HierarchicalDataTemplate'。 –

0
<TreeView ItemsSource="{Binding ReportCollection}"> 
    <TreeView.ItemTemplate> 
    <HierarchicalDataTemplate ItemsSource="{Binding Reports}"> 
     <TextBlock Text="{Binding Text}" /> 
    </HierarchicalDataTemplate> 
    </TreeView.ItemTemplate> 
</TreeView>