繁体   English   中英

在TreeView WPF中绑定多级层次结构数据

[英]Binding multiple level hierarchy data in treeview wpf

我需要在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))

需要在树视图上绑定的列表,这是它的结构

AnimalCategory类:

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

动物类:

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

而我的xaml代码是..!

<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>

使用上面的代码,我可以像下面这样绑定一级父级孩子,

在此处输入图片说明

buit,我需要像下面这样动态地绑定多个层次结构

在此处输入图片说明

在WPF中如何做..?

您可以将一个控件的值与另一控件的数据上下文绑定为-

Binding =“ {绑定路径= DataContext.MyBindingProperty,ElementName = MyMainWindow}

根据您的要求修改此行。

希望能帮助到你!

两件事:您必须在动物类中添加动物的ObservableCollections。 而且,您必须使用ItemsSource =“ {Binding Animals}”将HierarchicalDataTemplate的ItemTemplate更改为另一个HierarchicalDataTemplate。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM