首页 > 解决方案 > 从列表创建树视图WPF

问题描述

我想TreeViewList<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 名学生 Thomas - iPhone8,iPhone6 Lucas - iPhone4s, S8

我想拥有

Thomas
|_____iPhone8
|_____iPhone6

Lucas
|_____iPhone4s
|_____S8

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

标签: c#wpfdata-bindingtreeview

解决方案


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

推荐阅读