Создать древовидную структуру из списка <customClass>WPF - PullRequest
0 голосов
/ 04 июля 2018

Я хотел бы создать TreeView из List<PhonesFromStudents>.

Мой пользовательский класс PhonesFromStudents

public class PhonesFromStudents
{ 
    public string Name { get; set; }

    public List<string> Phones { get; set; } 
}

XAML:

 <TreeView  x:Name="tv_source" Grid.Row="2" Grid.Column="1" Margin="0,5" HorizontalAlignment="Stretch" ItemsSource="{Binding ListStudents}" Background="White" BorderBrush="{x:Null}">
        <TreeView.ItemTemplate>
            <DataTemplate>
                <TextBlock Text="{Binding Name}"  />
            </DataTemplate>
        </TreeView.ItemTemplate>
    </TreeView>

MainWindows.cs

 internal MainWindow(List<PhonesFromStudents> list)
    {

        InitializeComponent();
        this.ListStudents = list;
        this.DataContext = this;
    }

Пример: 2 ученика Томас - iPhone8, iPhone6 Лукас - iPhone4s, S8

я бы хотел иметь

Thomas
|_____iPhone8
|_____iPhone6

Lucas
|_____iPhone4s
|_____S8

Но я получаю пустой список из пользовательского интерфейса. Кто-нибудь может мне помочь? Спасибо

1 Ответ

0 голосов
/ 04 июля 2018

Используйте HierarchicalDataTemplate:

<TreeView x:Name="tv_source" Grid.Row="2" Grid.Column="1" Margin="0,5" 
          HorizontalAlignment="Stretch" ItemsSource="{Binding ListStudents}" Background="White" BorderBrush="{x:Null}">
    <TreeView.Resources>
        <HierarchicalDataTemplate DataType="{x:Type local:PhonesFromStudents}" ItemsSource="{Binding Phones}">
            <TextBlock Text="{Binding Name}"  />
        </HierarchicalDataTemplate>
    </TreeView.Resources>
</TreeView>

... и убедитесь, что ListStudents является публичной собственностью:

public List<PhonesFromStudents> ListStudents { get; set; }
...