WPF的DataGrid自动生成中文列头

直接将一个对象集合绑定到DataGrid上面,设置自动生成列AutoGenerateColumns="True",DataGrid会自动根据对象类的属性生成对应的列

示例类对象:

C# 复制代码
 public class DataModel
 {
     public int Id { get; set; }

     public string Name { get; set; }

     public string Description { get; set; }

     public string Username { get; set; }

     public string Password { get; set; }
 }

绑定到DataGrid的ItemsSource上面,的效果如下:

自动生成中文表头

如果要生成中文表头,常规的做法就是在Xaml写完整每个表头,Header等于中文表头名,然后一一绑定属性,这样表头就是固定的,并且比较麻烦。

现在想要的就是在自动生成的时候把属性表头自动转换成中文的表头,通过添加特性标签来实现。

1. 在类的属性上增加特性用于标示对应的中文

Description特性对属性都添加中文描述(也可以使用其他特性比如Display,后面查找的时候改成对应的就可以了)

C# 复制代码
 public class DataModel
 {
     [Description("ID编号")]
     public int Id { get; set; }

     [Description("姓名")]
     public string Name { get; set; }

     [Description("描述")]
     public string Description { get; set; }

     [Description("用户名")]
     public string Username { get; set; }

     [Description("密码")]
     public string Password { get; set; }
 }

2. 添加AutoGeneratingColumn事件

在DataGrid上面添加AutoGeneratingColumn事件,在生成留过程中替换列头Header,AutoGeneratingColumn="DG_AutoGeneratingColumn"

C# 复制代码
 private void DG_AutoGeneratingColumn(object sender, DataGridAutoGeneratingColumnEventArgs e)
 {
     var result = e.PropertyName;
     var p = (e.PropertyDescriptor as PropertyDescriptor)
         .ComponentType.GetProperties()
         .FirstOrDefault(x => x.Name == e.PropertyName);
     if (p != null)
     {
         var found = p.GetCustomAttribute<DescriptionAttribute>();
         if (found != null)
             result = found.Description;
     }
     e.Column.Header = result;
 }

实现的效果

相关推荐
神仙别闹1 小时前
基于 C++ 实现(控制台)学生成绩管理系统
开发语言·c++
伞伞悦读2 小时前
【第36期】Python 目录与路径详解:pathlib、文件遍历、创建、复制、移动和删除风险
开发语言·python
林川~012 小时前
Unity 万能物理检测工具:射线检测 / 范围检测 / 层级过滤 / 编辑器可视化(可直接拿去用)
游戏·unity·c#·射线检测·通用工具
free-elcmacom4 小时前
C语言字符指针与字符串字面量——从一道“剑指 Offer”笔试题说起
c语言·visual studio
2601_966949654 小时前
只拿到股票代码还不够:量化程序到底还需要哪些标的信息?——从数据建模开始理解股票元数据
开发语言·python·数据分析·pandas·量化交易·股票数据·quantdash
m0_734571765 小时前
深入理解5g <十八>传输块tbsize的计算
开发语言·5g
He BianGu6 小时前
【WPF-VisionMaster】机器视觉通用平台V5.0版本发行说明
opencv·c#·wpf·halcon·机器视觉·visionmaster
tang_04276 小时前
【Hi.Ltd 专题】第9期:Interop 配置互操作(JSON/INI/XML/YAML/注册表/扫码)
经验分享·c#·hi.ltd系列
RAN11426760086 小时前
1.3第一个程序的介绍
开发语言·qt
blue_ice .7 小时前
Verilog DDS 数字信号发生器:DAC 输出模拟波形与 ADC 回采观测
开发语言·单片机·嵌入式硬件·fpga开发