2016-06-01 15 views
0

ich brauche rekursiven Kindknoten für eine treeview in wpf zu binden .Aber ich wirklich weiß nicht, wie es funktioniert .Hier ist, was ichBindung mehrstufiger Hierarchiedaten in treeview wpf

ObservableCollection<Animal> animals = new ObservableCollection<Animal>(); 
animals.Add(new Animal("California Newt")); 
animals.Add(new Animal("Tomato Frog")); 
animals.Add(new Animal("Green Tree Frog")); 
animals.Add(new Animal("Frog")); 
AnimalCategories.Add(new AnimalCategory("Amphibians", animals)); 

animals = new ObservableCollection<Animal>(); 
animals.Add(new Animal("Golden Silk Spider")); 
animals.Add(new Animal("Black Widow Spider")); 
AnimalCategories.Add(new AnimalCategory("Spiders", animals)) 

Liste gefunden haben, müssen werden auf dem treeview binded und hier ist die Struktur für sie

AnimalCategory Klasse:

Class AnimalCategory 
    Private _category As String 
    Public Property Category As String 
     Get 
      Return _category 
     End Get 
     Set(ByVal value As String) 
      _category = value 
     End Set 
    End Property 
    Private _animals As ObservableCollection(Of Animal) 
    Public ReadOnly Property Animals() As ObservableCollection(Of Animal) 
     Get 

      If _animals Is Nothing Then 
       _animals = New ObservableCollection(Of Animal)() 
      End If 

      Return _animals 
     End Get 
    End Property 

    Public Sub New() 
    End Sub 
    Public Sub New(category As String, animals As ObservableCollection(Of Animal)) 
     _category = category 
     _animals = animals 
    End Sub 
End Class 

Tier Klasse:

Class Animal 
    Private _name As String 
    Public Property Name As String 
     Get 
      Return _name 
     End Get 
     Set(ByVal value As String) 
      _name = value 
     End Set 


    End Property 
    Public Sub New() 
    End Sub 
    Public Sub New(name As String) 
     _name = name 
    End Sub 
End Class 

und mein XAML-Code ist ..!

<TreeView x:Name="radTreeView" Background="#4E4E4E" x:FieldModifier="public" ItemsSource="{x:Static local:cntlWPFMMTreeView.AnimalCategories}" 
     ScrollViewer.HorizontalScrollBarVisibility="Visible" ScrollViewer.VerticalScrollBarVisibility="Visible"> 
<telerik:RadTreeView.ItemTemplate> 
     <HierarchicalDataTemplate ItemsSource="{Binding Animals}"> 
      <TextBlock Text="{Binding Category}" /> 
      <HierarchicalDataTemplate.ItemTemplate> 
       <DataTemplate> 
        <TextBlock Text="{Binding Name}"/> 
       </DataTemplate> 
      </HierarchicalDataTemplate.ItemTemplate> 
     </HierarchicalDataTemplate> 
    </telerik:RadTreeView.ItemTemplate> 
</TreeView> 

den obigen Code verwenden i wie unter einem Niveau von Eltern-Kind-hiereachy binden kann,

enter image description here

Buit ich brauche wie unten binden etwas wie viele Hierarchiestufe erhalten dynamisch

enter image description here

Wie es in WPF ..?

Antwort

0

Sie können den Wert einer Kontrolle mit Datacontext eines anderen Steuer as-

Binding binden = "{Binding Path = DataContext.MyBindingProperty, Elementname = MyMainWindow}

Ändern Sie diese Zeile nach Ihren . Voraussetzung

Hoffe, es hilft

+1

Sorry, ich konnte es nicht bekommen ..! – Arshad

+0

Was wird diese Bindung für die hierarchische Ansicht tun? –

0

Zwei Dinge: Sie haben eine ObservableCollections der Tiere zu Ihrem Tier-Klasse hinzuzufügen.Und Sie müssen das ItemTemplate des HierarchicalDataTemplate in ein anderes HierarchicalDataTemplate mit ItemsSource = "{Binding Animals}" ändern.