首页 > 解决方案 > TreeView - 绑定

问题描述

我在将类绑定到我的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>

我想我的绑定有问题,但不知道是什么问题。

标签: c#wpftreeviewhierarchicaldatatemplate

解决方案


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

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

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

你需要在代码隐藏中做这样的事情:

this.DataContext = new Class();

然后绑定到这个 Class 属性。这个类应该是你在视图模型中的主要类。


推荐阅读