TreeView-绑定

时间:2018-12-17 08:41:33

标签: c# wpf treeview hierarchicaldatatemplate

我在将类绑定到我的TreeView时遇到问题。真的没有用,我什么也没显示。

这是我的课程:

public class Main
{
    public List<Child1> Ch1 { get; set; }

    public List<Child2> Ch2 { get; set; }

}

public class Child1
{
    public String CName { get; set; }
    public List<Grandson> Grandson { get; set; }
    public int Age { get; set; }
}

public class Grandson
{
    public String GName { get; set; }
    public List<Son> Son{ get; set; }
    public List<Daught> Daught{ get; set; }
    public int Age { get; set; }
}

public class Son
{
    public String OName { get; set; }
    public int Age { get; set; }
}

public class Daught
{
    public String DName { get; set; }
    public int Age { get; set; }
}

public class Child2
{
    public String C2Name { get; set; }
    public int Rights { get; set; }
}

如您所见,我有很多列表,并且列表中的列表都想放入TreeView中。

<TreeView Grid.Row="1" ItemsSource="{Binding Main}" IsEnabled="{Binding TreeEnabled}" >
    <TreeViewItem Header="{Binding CName}" ItemsSource="{Binding Ch1}" >
        <TreeViewItem Header="{Binding GName}" ItemsSource="{Binding Grandson}" >
            <TreeViewItem Header="{Binding OName}" ItemsSource="{Binding Son}" >
            </TreeViewItem>
            <TreeViewItem Header="{Binding DName}" ItemsSource="{Binding Daught}"></TreeViewItem>
        </TreeViewItem>
    </TreeViewItem>
    <TreeViewItem Header="{Binding C2Name}" ItemsSource="{Binding Child2}"></TreeViewItem>
</TreeView>

我认为绑定有问题,但不知道是什么问题。

2 个答案:

答案 0 :(得分:1)

首先:要将列表绑定到视图时,必须先创建ObservableCollection <T>,否则它不会显示对视图的更改。 (我不知道您对C#有多熟悉,所以我在<T>中说,T表示您要在其中列出它们的任何类型。例如ObservableCollection <Person>。)

第二个:如果将整个列表绑定到树视图,则不需要一个一个地绑定。

第三:您是否在任何地方为绑定设置了DataContext?

您需要在代码隐藏中执行以下操作:

this.DataContext = new Class();

,然后绑定到此Class属性。该类应该是您在viewmodel中的主要类。

答案 1 :(得分:0)

在ViewModel中,我有一个main实例(也称为main),因此它应该绑定它。

层次结构是从数据库中获取的,名称仅是示例。

视图必须看起来像这样

enter image description here