2016-03-31 17 views
2

Sonsuz bir ebeveyn-çocuk hiyerarşisine sahip bir TreeView oluşturmam gerekiyor. TreeView, ResourceList adında bir listeye bağlı olmalı ve alt kaynaklarını Children adlı bir listeden çizmelidir. Tüm öğeler aynı tipte. İşte WPF'de sonsuz derinliğe sahip bir TreeView oluşturmak için veri bağlama özelliğini nasıl kullanırsınız?

var bugüne kadar XAML kodu:

<TreeView ItemsSource="{Binding ResourceList}" Grid.Column="0" Grid.Row="2" x:Name="ResourcesTree" SelectedItemChanged="ResourcesTree_OnSelectedItemChanged" Margin="0,4,0,0"> 
     <TreeView.ItemTemplate> 
      <HierarchicalDataTemplate ItemsSource="{Binding Children}"> 
       <TextBlock Text="{Binding Name}" /> 
       <HierarchicalDataTemplate.ItemTemplate> 
        <HierarchicalDataTemplate ItemsSource="{Binding Children}"> 
         <TextBlock Text="{Binding Name}" /> 
         <HierarchicalDataTemplate.ItemTemplate> 
          <DataTemplate> 
           <TextBlock Text="{Binding Name}" /> 
          </DataTemplate> 
         </HierarchicalDataTemplate.ItemTemplate> 
        </HierarchicalDataTemplate> 
       </HierarchicalDataTemplate.ItemTemplate> 
      </HierarchicalDataTemplate> 
     </TreeView.ItemTemplate> 
    </TreeView> 

O çalışır, ancak sorun yalnızca derin üç düzey gider vardır. Sonsuz hale getirmek için ne değiştirmeliyim?

Önemli olması durumunda, kod arkasında C# ve .NET kullanıyorum.

cevap

3

Sen ağaç gibi görünmelidir:

<TreeView ItemsSource="{Binding ResourceList}" Grid.Column="0" Grid.Row="2" x:Name="ResourcesTree" SelectedItemChanged="ResourcesTree_OnSelectedItemChanged" Margin="0,4,0,0"> 
     <TreeView.ItemTemplate> 
      <HierarchicalDataTemplate DataType="{x:Type childType}" ItemsSource="{Binding Children}"> 
       <TextBlock Text="{Binding Name}" /> 
      </HierachicalDataTemplate> 
     </TreeView.ItemTemplate> 
</TreeView> 

Not childType senin ağaç oluşur ne olursa olsun sınıf olmalıdır.

önemli kısmı, bütün çocukların (ve torunları, vb ..) bu DataTemplate kullanmak emin olur DataType="{x:Type childType}" ve size

+0

teşekkür için bunun hiyerarşik yönünü ele alır! İşe yaradı! Bu gerçekten basit olduğu ortaya çıktı, bu yüzden Google arama girişimlerimi şaşırttım, doğru sonuçları almadı. – Zerbu

+0

Evet, bir TreeView kullanmayı denediğimde ilk defa bunu anlamamı istedi. WPF sizin için tüm ağır kaldırıyor, güzel –

İlgili konular