WPF的DataGrid自动生成中文列头
直接将一个对象集合绑定到DataGrid上面,设置自动生成列AutoGenerateColumns="True",DataGrid会自动根据对象类的属性生成对应的列
示例类对象:
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,后面查找的时候改成对应的就可以了)
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"
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;}
实现的效果

相关文章:
WPF的DataGrid自动生成中文列头
直接将一个对象集合绑定到DataGrid上面,设置自动生成列AutoGenerateColumns"True",DataGrid会自动根据对象类的属性生成对应的列 示例类对象: public class DataModel{public int Id { get; set; }public string Name { get; set;…...
CSS【详解】居中对齐 (水平居中 vs 垂直居中)
水平居中 内部块级元素的宽度要小于容器(父元素) 方案一:文本居中对齐(内联元素) 限制条件:仅用于内联元素 display:inline 和 display: inline-block; 给容器添加样式 text-align:center<!DOCTYPE html> <html lang&q…...
【排序算法】基数排序
一:基本概念 1.1 基数排序(桶排序)介绍 基数排序(radix sort)属于“分配式排序”(distribution sort),又称“桶子法”(bucket sort)或bin sort,顾名思义,它是…...
解释存储过程和函数的区别,以及它们在MySQL中的用途。如何创建和使用存储过程和函数?
解释存储过程和函数的区别,以及它们在MySQL中的用途。 存储过程和函数在MySQL中的区别及用途 区别: 返回值: 函数:必须有一个返回值,这可以是一个标量值或一个表。如果没有明确的RETURN语句,函数将返回N…...
【GPU驱动开发】-GPU架构简介
前言 不必害怕未知,无需恐惧犯错,做一个Creator! GPU(Graphics Processing Unit,图形处理单元)是一种专门用于处理图形和并行计算的处理器。GPU系统架构通常包括硬件和软件层面的组件。 一、总体流程 应…...
m位数问题(c++题解)
题目描述 考官只给两个整数n和m(1 < n < 8,1< m <5),要求选手从1,2,…,n中取出m个数字,组成一个m位整数,统计所有的m位整数中一共有多少个素数。 如n3,m2时,符合条件的整数有&…...
洛谷P1331海战
题目背景 在峰会期间,武装部队得处于高度戒备。警察将监视每一条大街,军队将保卫建筑物,领空将布满了 F-2003 飞机。 此外,巡洋船只和舰队将被派去保护海岸线。不幸的是,因为种种原因,国防海军部仅有很少…...
如何利用Flutter来写后端 服务端应用
前言 Flutter是谷歌推出的一款跨平台开发框架,现在属于此领域star最多的框架,其被广泛应用于构建前台界面,但或许很少人知道,他也可以写后端应用。 本文主角 flutter非常著名的getx库推出的get server jonataslaw/get_server:…...
数据页和缓存页(BufferPool)
1. 数据页(dataPage) 什么是数据页? 数据页是 MySQL 存储引擎在磁盘和内存之间传输数据的基本单位,默认大小为16KB。 数据页的结构: 表头:储存与页相关的元信息,比如,页号&#…...
LibreOJ 136. 最小瓶颈路 题解 最小生成树 倍增
题目链接:LibreOJ 136. 最小瓶颈路 题目描述: 给定一张无向图,询问两个结点之间的最小瓶颈路。u和v两个结点之间最小瓶颈路指的是u和v的每条路径中经过的最大边权的最小值。 题解: 给出结论:无向图的最小瓶颈路与其最小…...
前端学习第三天-css基础
1. CSS简介 从HTML被发明开始,样式就以各种形式存在。不同的浏览器结合它们各自的样式语言为用户提供页面效果的控制。最初的HTML只包含很少的显示属性。 随着HTML的成长,为了满足页面设计者的要求,HTML添加了很多显示功能。但是随着这些功能…...
各种使用chatgpt prompts技巧
1,利用chatgpt生成照片 1.1,从现在起, 当你想发送一张照片时,请使用 Markdown ,并且 不要有反斜线, 不要用代码块。使用 Unsplash API (https://source.unsplash.com/1280x720/? < PUT YOUR QUERY HERE >)。如果你明白了,请回复“明白” 1.2,开始提问生成指定场景照…...
基于单片机的企业指纹考勤系统设计
摘要: 考勤系统是企业人力资源管理的重要依据,传统的考勤系统不能保证准确性,也存在地域局限,不能满足一些跨区域集团公司的考勤要求。文章以单片机技术以及生物特征识别技术为基础,分析企业单片机智能化指纹考勤系统的设计思路,从硬件设备的选型和配置、软件系统的开发、…...
JUC(java.util.concuurrent)的常见类介绍
Java 并发包(java.util.concurrent,简称 JUC)提供了一系列的工具和框架,用于简化并发编程。以下是 JUC 包中常见类的介绍: Callable: Callable 接口是 Java 提供的一个带返回值的任务接口,类似于…...
【中科院计算所】WSDM 2024冠军方案:基于大模型进行多文档问答
作者:李一鸣 张兆 中科院计算所 会话式多文档问答旨在根据检索到的文档以及上下文对话来回答特定问题。 在本文中,我们介绍了 WSDM Cup 2024 中“对话式多文档 QA”挑战赛的获胜方法,该方法利用了大型语言模型 (LLM) 卓越的自然语言理解和生…...
Android提供了多种方式来打开特定文件夹中的视频
使用 MediaStore获取指定文件夹的视频,更优化方法: import android.content.ContentResolver; import android.content.ContentValues; import android.content.Context; import android.net.Uri; import android.os.Build; import android.os.Environme…...
基于django的购物商城系统
摘要 本文介绍了基于Django框架开发的购物商城系统。随着电子商务的兴起,购物商城系统成为了许多企业和个人创业者的首选。Django作为一个高效、稳定且易于扩展的Python web框架,为开发者提供了便捷的开发环境和丰富的功能模块,使得开发购物商…...
Swagger3 使用详解
Swagger3 使用详解 一、简介1 引入依赖2 开启注解3 增加一个测试接口4 启动服务报错1.5 重新启动6 打开地址:http://localhost:8093/swagger-ui/index.html 二、Swagger的注解1.注解Api和ApiOperation2.注解ApiModel和ApiModelProperty3.注解ApiImplicitParams和Api…...
JVM 第二部分-2(堆,方法区)
4.堆 堆 一个Java程序(main方法)对应一个jvm实例,一个jvm实例只有一个堆空间堆是jvm启动的时候就被创建,大小也确定了。大小可以用参数设置。堆是jvm管理的一块最大的内存空间 核心区域,是垃圾回收的重点区域堆可以位…...
蓝桥杯Java B组历年真题(2013年-2019年)
一、2013年真题 1、世纪末的星期 使用日期类判断就行,这里使用LocalDate,也可以使用Calendar类 答案 2099 使用LocalDate import java.time.LocalDate; import java.time.format.DateTimeFormatter; // 1:无需package // 2: 类名必须Main, 不可修改p…...
华大HC32F460单片机工程搭建全流程(Keil MDK版,附资源包)
华大HC32F460单片机开发环境搭建实战指南(Keil MDK版) 第一次接触华大HC32F460系列单片机时,最令人头疼的莫过于工程搭建这个看似简单却暗藏玄机的环节。作为国产32位MCU中的佼佼者,HC32F460凭借其出色的性能和丰富的外设资源&…...
手把手教你用Event Viewer和Log Parser分析Windows安全日志(附玄机靶场实战)
从零到一:Windows安全日志分析实战指南 开篇:日志分析的价值与挑战 想象一下,你正面对一台疑似被入侵的Windows服务器,系统管理员递给你一个Security.evtx文件,说"看看能不能找到入侵者的痕迹"。作为安全新…...
如何用PRoot在Android上构建完整Linux环境:无需root权限的5个实战技巧
如何用PRoot在Android上构建完整Linux环境:无需root权限的5个实战技巧 【免费下载链接】proot An chroot-like implementation using ptrace. 项目地址: https://gitcode.com/gh_mirrors/pro/proot PRoot是一款革命性的开源工具,它能让你的Androi…...
三菱PLC网口通讯避坑指南:MX Component连接上位机常见问题与解决方案
三菱PLC网口通讯实战:从MX Component配置到疑难排错全解析 在工业自动化领域,三菱PLC与上位机的稳定通讯是系统集成的基石。MX Component作为三菱官方提供的通讯组件,其网口连接方式因配置灵活、响应快速而广受工程师青睐。然而,从…...
cv_unet_image-colorization快速部署:conda虚拟环境隔离最佳实践
cv_unet_image-colorization快速部署:conda虚拟环境隔离最佳实践 1. 项目概述 cv_unet_image-colorization 是一款基于 UNet 架构深度学习模型开发的本地化图像上色工具。这个工具采用了阿里魔搭开源的图像上色算法,能够精准识别黑白图像中的物体特征、…...
Agent Client Protocol 全景解析斗
1. 核心概念 在 Antigravity 中,技能系统分为两层: Skills (全局库):实际的代码、脚本和指南,存储在系统级目录(如 ~/.gemini/antigravity/skills)。它们是“能力”的本体。 Workflows (项目级):…...
OpCore-Simplify技术解析:5步实现黑苹果OpenCore EFI自动化配置
OpCore-Simplify技术解析:5步实现黑苹果OpenCore EFI自动化配置 【免费下载链接】OpCore-Simplify A tool designed to simplify the creation of OpenCore EFI 项目地址: https://gitcode.com/GitHub_Trending/op/OpCore-Simplify OpCore-Simplify是一款基于…...
ExBody2 运动风格与物理可行性平衡仿真系统 3.3 运动风格与物理可行性的平衡
目录 系统设计方案:ExBody2 运动风格与物理可行性平衡仿真系统 1. 系统级架构设计 2. 子系统详细设计 3. 数据结构定义 4. 接口规范 文章正文 第三部分:ExBody2表现性控制进阶 3.3 运动风格与物理可行性的平衡 3.3.1 基于相位的风格一致性原理 3.3.2 Zero-Moment P…...
重构浏览器书签管理哲学:Neat Bookmarks的树形思维与信息架构实践
重构浏览器书签管理哲学:Neat Bookmarks的树形思维与信息架构实践 【免费下载链接】neat-bookmarks A neat bookmarks tree popup extension for Chrome [DISCONTINUED] 项目地址: https://gitcode.com/gh_mirrors/ne/neat-bookmarks 当数字书签堆积如山&…...
Kimi-VL-A3B-Thinking入门必看:2.8B激活参数MoE多模态模型部署详解
Kimi-VL-A3B-Thinking入门必看:2.8B激活参数MoE多模态模型部署详解 1. 模型简介 Kimi-VL-A3B-Thinking是一款高效的开源混合专家(MoE)视觉语言模型,在多模态推理领域表现出色。这个模型最吸引人的特点是它仅激活2.8B参数就能实现…...
