TreeView - Связывание - PullRequest
       48

TreeView - Связывание

0 голосов
/ 17 декабря 2018

У меня проблема с привязкой класса к моему 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 голосов
/ 17 декабря 2018

Прежде всего: вы должны сделать ObservableCollection <T>, когда хотите связать список для просмотра, в противном случае он не будет отображать изменения в представлении.(Я не знаю, насколько вы знакомы с C #, тогда я говорю в <T>, T означает любой тип, из которого вы делаете список, например, ObservableCollection <Person>).

Второе: если вы связываетеДля всего списка в виде дерева нет необходимости связывать по одному.

В-третьих: Вы установили свой DataContext для привязок где-либо?

Вам нужно сделать что-то подобное в codebehind:

this.DataContext = new Class();

и затем привязать к этому классу свойства.Этот класс должен быть вашим основным классом в viewmodel.

0 голосов
/ 17 декабря 2018

В моей ViewModel у меня есть экземпляр main, также называемый main, поэтому он должен связать его.

Иерархия дана, я получаю i из базы данных, имена являются только примерами.

Вид должен выглядеть следующим образом

enter image description here

...