码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • 示例:WPF中DataGrid设置多级分组样式


    一、目的:应用CollectionViewSource和GroupStyle设置DataGrid多级分组样式


    二、实现

    一级分组效果如下

    二级分组效果如下

    三、环境


    VS2022

    四、示例

    具体实现代码如下

    1. <TabItem Header="DataGrid - 多级分组">
    2. <TabItem.Resources>
    3. <CollectionViewSource x:Key="cvs" Source="{h:GetStudents Count=10}">
    4. <CollectionViewSource.GroupDescriptions>
    5. <PropertyGroupDescription PropertyName="Name" />
    6. <PropertyGroupDescription PropertyName="Class" />
    7. CollectionViewSource.GroupDescriptions>
    8. CollectionViewSource>
    9. TabItem.Resources>
    10. <DataGrid IsReadOnly="True" AutoGenerateColumns="False" ItemsSource="{Binding Source={StaticResource cvs}}">
    11. <DataGrid.GroupStyle>
    12. <GroupStyle>
    13. <GroupStyle.ContainerStyle>
    14. <Style TargetType="{x:Type GroupItem}">
    15. <Setter Property="Margin" Value="0,0,0,5" />
    16. <Setter Property="Template">
    17. <Setter.Value>
    18. <ControlTemplate TargetType="{x:Type GroupItem}">
    19. <Expander IsExpanded="True">
    20. <Expander.Header>
    21. <DockPanel Margin="0 5">
    22. <TextBlock Width="200"
    23. Margin="5,0,0,0"
    24. FontWeight="Bold">
    25. <Run Text="厨师 :"/>
    26. <Run Text="{Binding Name,Mode=OneWay}"/>
    27. TextBlock>
    28. <TextBlock FontWeight="Bold">
    29. <Run Text="数量 :"/>
    30. <Run Text="{Binding ItemCount,Mode=OneWay}"/>
    31. <Run Text="个"/>
    32. TextBlock>
    33. DockPanel>
    34. Expander.Header>
    35. <ItemsPresenter />
    36. Expander>
    37. ControlTemplate>
    38. Setter.Value>
    39. Setter>
    40. Style>
    41. GroupStyle.ContainerStyle>
    42. GroupStyle>
    43. <GroupStyle>
    44. <GroupStyle.HeaderTemplate>
    45. <DataTemplate>
    46. <DockPanel>
    47. <DockPanel.Background>
    48. <SolidColorBrush Color="Transparent" />
    49. DockPanel.Background>
    50. <TextBlock Width="200"
    51. Margin="30,6,0,6"
    52. VerticalAlignment="Center">
    53. <Run Text="班次 :"/>
    54. <Run Text="{Binding Name,Mode=OneWay}"/>
    55. TextBlock>
    56. <TextBlock VerticalAlignment="Center">
    57. <Run Text="销量 :"/>
    58. <Run Text="{Binding ItemCount,Mode=OneWay}"/>
    59. <Run Text="单"/>
    60. TextBlock>
    61. DockPanel>
    62. DataTemplate>
    63. GroupStyle.HeaderTemplate>
    64. GroupStyle>
    65. DataGrid.GroupStyle>
    66. <DataGrid.Columns>
    67. <DataGridTemplateColumn Width="Auto" Header="菜品">
    68. <DataGridTemplateColumn.CellTemplate>
    69. <DataTemplate>
    70. <Image Source="2.jpg" Width="200" VerticalAlignment="Center" Stretch="UniformToFill" Height="100"/>
    71. DataTemplate>
    72. DataGridTemplateColumn.CellTemplate>
    73. DataGridTemplateColumn>
    74. <DataGridTextColumn Width="*" Header="产地" Binding="{Binding Address}"/>
    75. <DataGridTextColumn Width="*" Header="邮箱" Binding="{Binding Emall}"/>
    76. <DataGridTextColumn Width="100" Header="价格" Binding="{Binding Score, StringFormat={}{0:C}}"/>
    77. <DataGridTextColumn Width="*" Header="联系方式" Binding="{Binding Tel}"/>
    78. DataGrid.Columns>
    79. DataGrid>
    80. TabItem>

    首先,定义一个支持分组排序的CollectionViewSource资源

    然后,绑定到DataGrid的ItemsSource上

    最后,设置DataGrid的GroupStyle,示例中定义了二级分组,所以需要设置两个GroupStyle

    五、需要了解的知识点

    CollectionViewSource 类 (System.Windows.Data) | Microsoft Learn

    GroupStyle 类 (System.Windows.Controls) | Microsoft Learn

    六、源码地址

    GitHub - HeBianGu/WPF-ControlDemo: 示例

    GitHub - HeBianGu/WPF-ControlBase: Wpf封装的自定义控件资源库

    GitHub - HeBianGu/WPF-Control: WPF轻量控件和皮肤库

    七、了解更多

    System.Windows.Controls 命名空间 | Microsoft Learn

    https://github.com/HeBianGu

    HeBianGu的个人空间-HeBianGu个人主页-哔哩哔哩视频

  • 相关阅读:
    pytorch初学笔记(十三):神经网络基本结构之Sequential层的使用以及搭建完整的小型神经网络实战
    C. Array Elimination-- Codeforces Round #751 (Div. 2)
    视频剪辑技巧:简单步骤,批量剪辑并随机分割视频
    (附源码)ssm驾校考试车预约管理系统 毕业设计 271506
    PID控制原理
    解决npm-v显示空白的问题
    tiup update
    git实战命令(小技巧篇hp)
    数据结构——栈和队列互相实现
    【Linux】第十一章 进程信号(概念+产生信号+阻塞信号+捕捉信号)
  • 原文地址:https://blog.csdn.net/u010975589/article/details/139751606
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号