前言
比方说我们有以下两个类:
public class class
{
public string? name { get; set; }
public list<student>? students { get; set; }
}
public class student
{
public string? name { get; set; }
}
一个表示班级,一个表示学生,一个班级包含多个学生。在wpf中我们该如何显示这种具有层级关系的数据呢?
今天给大家介绍的是用treeview与hierarchicaldatatemplate进行显示。
实现效果如下所示:

如果你对此感兴趣,可以接着往下阅读。
创建数据
private void button_click(object sender, routedeventargs e)
{
student student1 = new student() { name = "小明" };
student student2 = new student() { name = "小红" };
student student3 = new student() { name = "小黄" };
student student4 = new student() { name = "小绿" };
student student5 = new student() { name = "小刚" };
list<student> students1 = new list<student>()
{
student1,
student2,
student3
};
list<student> students2 = new list<student>()
{
student4,
student5
};
class class1 = new class()
{
name = "班级1",
students = students1
};
class class2 = new class()
{
name = "班级2",
students = students2
};
list<class> classes = new list<class>()
{
class1,
class2
};
datacontext = classes;
}
数据模板的使用
xaml:
<treeview>
<treeviewitem itemssource="{binding}" header="全部班级"/>
</treeview>
hierarchicaldatatemplate介绍
hierarchicaldatatemplate是wpf(windows presentation foundation)中的一种数据模板,用于在树状结构或层次结构中显示数据。它允许您定义如何呈现包含子项的数据对象。
通过hierarchicaldatatemplate,您可以指定一个模板,用于呈现数据对象本身,以及一个模板,用于呈现其子项。这使得在treeview等控件中轻松显示复杂的数据结构,如文件夹和文件、组织架构等。
通常,您会在itemssource属性中指定数据源,然后使用hierarchicaldatatemplate定义每个级别的数据对象应该如何呈现。
通过使用hierarchicaldatatemplate,您可以更灵活地控制数据的呈现方式,使您能够创建具有深层次结构的动态ui。
hierarchicaldatatemplate的使用
xaml:
<window.resources>
<hierarchicaldatatemplate datatype = "{x:type local2:class}"
itemssource = "{binding path=students}">
<textblock text="{binding path=name}"/>
</hierarchicaldatatemplate>
<datatemplate datatype="{x:type local2:student}">
<textblock text="{binding path=name}"/>
</datatemplate>
</window.resources>
我们可以发现对于class类,使用了一个hierarchicaldatatemplate,itemssource绑定的是class类的students属性。
student类并没有再含有层次数据了所有直接使用datatemplate就好了。
查看实现效果
最后实现的效果如下所示:

总结
在日常开发过程中,我们可能也会有显示层级数据的需求,本文通过一个简单的demo,介绍了在wpf中通过treeview控件与hierarchicaldatatemplate层级数据模板进行层级数据的显示。
到此这篇关于详解wpf如何显示具有层级关系的数据的文章就介绍到这了,更多相关wpf显示层级关系数据内容请搜索代码网以前的文章或继续浏览下面的相关文章希望大家以后多多支持代码网!
发表评论