用包含子节点对象列表的Category对象绑定树视图

本文关键字:对象 绑定 视图 Category 列表 包含 子节点 | 更新日期: 2023-09-27 18:19:24

显示类别没有问题,但我无法让它显示应该在类别内的对象。我做错了什么?

提前谢谢你。

XAML——Datatemplates。

<DataTemplate x:Key="Component">
    <TextBlock Text="{Binding Name}"/>
</DataTemplate>
<HierarchicalDataTemplate x:Key="Category"
                          ItemTemplate="{StaticResource Component}">
    <TextBlock Text="{Binding Name}"/>
</HierarchicalDataTemplate>

XAML: Treeview

<telerik:RadTreeView x:Name="treeview" IsDragDropEnabled="True" 
                     HorizontalAlignment="Left" Margin="10,10,0,10" Width="190" 
                     IsManipulationEnabled="True"
                     IsExpandOnSingleClickEnabled="True"
                     ItemTemplate="{StaticResource Category}" />

c#:包含树视图子对象的categoryclass。(从databasemodel生成)

public partial class Category
{
    public Category()
    {
        this.MethodComponent = new HashSet<MethodComponent>();
    }
    public int Id { get; set; }
    public string Name { get; set; }
    public virtual ICollection<MethodComponent> MethodComponent { get; set; }
    public override string ToString()
    {
        return Name;
    }
}

}

获取数据:
    public List<Category> Get_Categories()
    {
        using (var context = new ProcessDatabaseEntities())
        {
           return context.Category.ToList();
        }
    }
c#绑定数据:
treeview.ItemsSource = d.Get_Categories();

用包含子节点对象列表的Category对象绑定树视图

您需要在 HierarchicalDataTemplate 上设置 ItemsSource MethodComponent ,以便用子集合填充父节点。

<HierarchicalDataTemplate x:Key="Category"
                          ItemTemplate="{StaticResource Component}"
                          ItemsSource="{Binding MethodComponent}">    
     <TextBlock Text="{Binding Name}"/>    
</HierarchicalDataTemplate>