TreeView - 绑定

TreeView - Binding

我在将 class 绑定到我的 TreeView 时遇到问题。它真的不起作用,我什么也没显示。

这是我的 class:

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>

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

在我的 ViewModel 中,我有一个 main 实例也命名为 main,所以它应该绑定它。

给出层次结构我从数据库中获取我的名字只是例子。

视图必须如下所示

首先:当你想绑定一个列表到视图时你必须ObservableCollection <T>,否则它不会显示视图的变化。 (我不知道你对 C# 有多熟悉,然后我在 <T> 中说,T 表示你正在列出它们的任何类型。例如 ObservableCollection <Person>)。

其次:如果将整个列表绑定到树视图,则无需逐个绑定。

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

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

this.DataContext = new Class();

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