详解WPF如何显示具有层级关系的数据

 更新时间:2024年04月23日 08:17:13   作者:mingupupup  
这篇文章主要为大家详细介绍了在WPF中如何显示具有层级关系的数据,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下

前言

比方说我们有以下两个类:

 public class Class
 {
     public string? Name { get; set; }
     public List<Student>? Students { get; set; }
 }
 public class Student
 {
     public string? Name { get; set; }
 }

一个表示班级,一个表示学生,一个班级包含多个学生。在WPF中我们该如何显示这种具有层级关系的数据呢?

今天给大家介绍的是用TreeViewHierarchicalDataTemplate进行显示。

实现效果如下所示:

如果你对此感兴趣,可以接着往下阅读。

创建数据

 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介绍

HierarchicalDataTemplateWPF(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类,使用了一个HierarchicalDataTemplateItemsSource绑定的是Class类的Students属性。

Student类并没有再含有层次数据了所有直接使用DataTemplate就好了。

查看实现效果

最后实现的效果如下所示:

总结

在日常开发过程中,我们可能也会有显示层级数据的需求,本文通过一个简单的Demo,介绍了在WPF中通过TreeView控件HierarchicalDataTemplate层级数据模板进行层级数据的显示。

到此这篇关于详解WPF如何显示具有层级关系的数据的文章就介绍到这了,更多相关WPF显示层级关系数据内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • C#聊天程序服务端与客户端完整实例代码

    C#聊天程序服务端与客户端完整实例代码

    这篇文章主要介绍了C#聊天程序服务端与客户端完整实例代码,很经典的应用,需要的朋友可以参考下
    2014-07-07
  • C# BitArray点阵列的使用

    C# BitArray点阵列的使用

    本文主要介绍了C# BitArray点阵列的使用,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-03-03
  • 利用AOP实现SqlSugar自动事务

    利用AOP实现SqlSugar自动事务

    这篇文章主要为大家详细介绍了利用AOP实现SqlSugar自动事务,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-10-10
  • c#中CAD文件读取实例

    c#中CAD文件读取实例

    在本篇文章里小编给大家整理的是一篇关于c#中CAD文件读取实例内容,有兴趣的朋友们可以学习参考下。
    2021-05-05
  • 浅析C#中goto跳转语句的用法

    浅析C#中goto跳转语句的用法

    在我们日常工作中常用的C#跳转语句有break、continue、return,但是还有一个C#跳转语句很多同学可能都比较的陌生就是goto,下面我们就来看看goto跳转语句的用法吧
    2024-03-03
  • C#自定义日志记录

    C#自定义日志记录

    这篇文章主要为大家详细介绍了C#自定义日志记录的相关资料,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2016-09-09
  • C#与PHP的md5计算结果不同的解决方法

    C#与PHP的md5计算结果不同的解决方法

    今天在用C#接入我的登录api发现了一个问题,登陆的时候无论如何都会出现用户名和密码错误的问题,后来通过查找排除找的了问题的原因是因为C#与PHP的md5计算结果不同导致的,下面就来看看如何解决这个问题吧。
    2016-12-12
  • C#中的事务用法实例分析

    C#中的事务用法实例分析

    这篇文章主要介绍了C#中的事务用法,以一个简单实例形式分析了C#创建及使用事物的相关技巧,具有一定参考借鉴价值,需要的朋友可以参考下
    2015-09-09
  • C#使用NPOI导出Excel类封装

    C#使用NPOI导出Excel类封装

    这篇文章主要为大家详细介绍了C#使用NPOI导出Excel类封装,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-02-02
  • C#微信公众号与订阅号接口开发示例代码

    C#微信公众号与订阅号接口开发示例代码

    这篇文章主要介绍了C#微信公众号与订阅号接口开发示例代码,结合实例形式简单分析了C#针对微信接口的调用与处理技巧,需要的朋友可以参考下
    2016-06-06

最新评论