从List <customclass> WPF

时间:2018-07-04 13:17:21

标签: c# wpf data-binding treeview

我想从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

但是我从UI中得到一个空列表。 有人能帮我吗? 谢谢

1 个答案:

答案 0 :(得分:1)

使用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; }