当前位置: 首页 > news >正文

WPF DataGrid columns表头根据数据集动态动态生成Demo

        思路是这样的,数组集合装表头的信息,遍历这个集合,遍历过程中处理一下数据,然后就把每表头信息添加到dataGrid2.Columns.Add(templateColumn);

1,页面Xaml代码:

  <DataGrid x:Name="dataGrid" ItemsSource="{Binding DataSource}" AutoGenerateColumns="False" ColumnHeaderHeight="30" RowHeight="30"/>

2,声明一个类:

public class TY_DataGridColumsHeader
{public string Name { get; set; }public object HeaderTitle { get; set; }public object IsVisible { get; set; }
}

3,声明表头数据集合,再遍历。 

#region 自己创建的DataGrid表头var dpDescriptor2 = System.ComponentModel.DependencyPropertyDescriptor.FromProperty(DataGrid.ItemsSourceProperty, typeof(DataGrid));ObservableCollection<TY_DataGridColumsHeader> listheadttile = new ObservableCollection<TY_DataGridColumsHeader>();listheadttile.Add(new TY_DataGridColumsHeader(){HeaderTitle = "名称",Name = "Name"});listheadttile.Add(new TY_DataGridColumsHeader(){HeaderTitle = "年龄",Name = "Age"});dpDescriptor2.AddValueChanged(dataGrid2, (s, e) => {dataGrid2.Columns.Clear();foreach (var item in listheadttile){var templateColumn = new DataGridTemplateColumn(){Header = item.HeaderTitle,CellTemplate = (DataTemplate)XamlReader.Parse(GetCellTemplateXaml2(item.Name))};dataGrid2.Columns.Add(templateColumn);}});#endregion

4,cell的模版 

public static string GetCellTemplateXaml2(string listheadttile){var templateStr = "<DataTemplate xmlns=\"http://schemas.microsoft.com/winfx/2006/xaml/presentation\" xmlns:x=\"http://schemas.microsoft.com/winfx/2006/xaml\">";//templateStr += "<Grid><Grid.ColumnDefinitions><ColumnDefinition Width=\"*\" /><ColumnDefinition Width=\"Auto\" /></Grid.ColumnDefinitions>";//templateStr += $"<UniformGrid Columns=\"{(hasFlag ? cellBindingList.Count - 1 : cellBindingList.Count)}\">";//cellBindingList.ForEach(a =>//{//    if (!hasFlag || a != cellBindingList.Last())//    {//        templateStr += "<TextBlock Margin=\"10 0 10 0\" Text=\"{Binding " + a + "}\" VerticalAlignment=\"Center\" HorizontalAlignment=\"Center\" />";//    }//});//templateStr += "</UniformGrid>";//if (hasFlag)//{//    templateStr += "<TextBlock Grid.Column=\"1\" Text=\"{Binding " + cellBindingList.Last() + "}\" Width=\"50\" TextAlignment=\"Center\" VerticalAlignment=\"Center\" HorizontalAlignment=\"Center\" />";//}templateStr += "<Grid>";templateStr += "<TextBlock Margin=\"10 0 10 0\" Text=\"{Binding " + listheadttile + "}\" VerticalAlignment=\"Center\" HorizontalAlignment=\"Center\" />";templateStr += "</Grid></DataTemplate>";return templateStr;}

相关文章:

WPF DataGrid columns表头根据数据集动态动态生成Demo

思路是这样的&#xff0c;数组集合装表头的信息&#xff0c;遍历这个集合&#xff0c;遍历过程中处理一下数据&#xff0c;然后就把每表头信息添加到dataGrid2.Columns.Add(templateColumn); 1&#xff0c;页面Xaml代码&#xff1a; <DataGrid x:Name"dataGrid" …...

1339. 分裂二叉树的最大乘积

链接&#xff1a; ​​​​​​1339. 分裂二叉树的最大乘积 题解&#xff1a; /*** Definition for a binary tree node.* struct TreeNode {* int val;* TreeNode *left;* TreeNode *right;* TreeNode() : val(0), left(nullptr), right(nullptr) {}* …...

【C++】Stack和Queue

欢迎来到Cefler的博客&#x1f601; &#x1f54c;博客主页&#xff1a;那个传说中的man的主页 &#x1f3e0;个人专栏&#xff1a;题目解析 &#x1f30e;推荐文章&#xff1a;题目大解析3 目录 &#x1f449;&#x1f3fb;Stack Constructor&#x1f449;&#x1f3fb;Stack …...

Maven之tomcat7-maven-plugin 版本低的问题

tomcat7-maven-plugin 版本『低』的问题 相较于当前最新版的 tomcat 10 而言&#xff0c;tomcat7-maven-plugin 确实看起来很显老旧。但是&#xff0c;这个问题并不是问题&#xff0c;至少不是大问题。 原因 1&#xff1a;tomcat7-maven-plugin 仅用于我们&#xff08;程序员&…...

在项目中如何解除idea和Git的绑定

在项目中如何解除idea和Git的绑定 1、点击File--->Settings...(CtrlAltS)--->Version Control--->Directory Mappings--->点击取消Git的注册根路径&#xff1a; 2、回到idea界面就没有Git了&#xff1a; 3、给这个项目初始化 这样就可以重新绑定远程仓库了&#x…...

AGI 在网易云信的技术提效和业务创新

We believe our research will eventually lead to artificial general intelligence, a system that can solve human-level problems. Building safe and beneficial AGI is our mission. ---- OpenAI 通用人工智能 AGI 作为 AI 的终极形态&#xff0c;是 AI 行业内追求的演…...

线性代数的学习和整理9(草稿-----未完成)

3.3 特征值和特征向量是什么&#xff1f; 直接说现在&#xff1a;特征向量这个块往哪个方向进行了拉伸&#xff0c;各个方向拉伸了几倍。这也让人很容易理解为什么&#xff0c;行列式的值就是特征值的乘积。 特征向量也代表了一些良好的性质&#xff0c;即这些线在线性变换后…...

React的useReducer与Reudx对比

useReducer 和 Redux 都是用于处理应用程序的状态管理的工具&#xff0c;但它们在概念和使用场景上存在一些区别。 useReducer&#xff1a; useReducer 是 React 提供的一个 Hook&#xff0c;用于管理局部状态。它接受一个 reducer 函数和初始状态&#xff0c;并返回一个包含当…...

深度学习环境搭建 cuda、模型量化bitsandbytes安装教程 windows、linux

cuda、cudann、conda安装教程 输入以下命令&#xff0c;查看 GPU 支持的最高 CUDA 版本。 nvidia-smi cuda安装&#xff08;cudatoolkit&#xff09; 前往 Nvidia 的 CUDA 官网&#xff1a;CUDA Toolkit Archive | NVIDIA Developer CUDA Toolkit 11.8 Downloads | NVIDIA …...

pythond assert 0 <= colx < X12_MAX_COLS AssertionError

python使用xlrd读取excel时&#xff0c;报错&#xff1a; assert 0 < colx < X12_MAX_COLS AssertionError 大意是excel列太多了。主要是xlrd库的问题。最好的方法是不用它&#xff0c;但是我用的其他人提供的工具用到它&#xff0c;没法改。 尝试手动删除excel的列&am…...

js简介以及在html中的2种使用方式(hello world)

简介 javascript &#xff1a;是一个跨平台的脚本语言&#xff1b;是一种轻量级的编程语言。 JavaScript 是 Web 的编程语言。所有现代的 HTML 页面都使用 JavaScript。 HTML&#xff1a; 结构 css&#xff1a; 表现 JS&#xff1a; 行为 HTMLCSS 只能称之为静态网页&#xff0…...

vsCode使用cuda

一、vsCode使用cuda 前情提要&#xff1a;配置好mingw&#xff1a; 1.安装cuda 参考&#xff1a; **CUDA Toolkit安装教程&#xff08;Windows&#xff09;&#xff1a;**https://blog.csdn.net/qq_42951560/article/details/116131410 2.在vscode中添加includePath c_cp…...

ubuntu无法使用apt命令时怎么安装库

如题 因为某些原因&#xff0c;不能直接联网使用apt命令安装库。只能手动去ubuntu镜像源里 找对应的包的deb安装文件 镜像源地址&#xff08;适用于AMD64架构,就是常见的PC的X86-64啦&#xff09; 镜像源地址&#xff08;适用于ARM64,armhf,ppc64el,riscv64,s390x架构&#xff…...

防火墙firewall

一、什么是防火墙 二、iptables 1、iptables介绍 2、实验 138的已经被拒绝&#xff0c;1可以 三、firewalld 1、firewalld简介 关闭iptables&#xff0c;开启firewalld&#xff0c;curl不能使用&#xff0c;远程连接ssh可以使用 添加80端口 这样写也可以&#xff1a;添加http…...

拿来即用,自己封装的 axios

文章目录 一、需求二、分析1. 安装axios2. 新建一个 ts 文件&#xff0c;封装 axios3. store 存放 token 信息4. 使用5. 文件 type.js 一、需求 在日常开发中&#xff0c;我们会经常用到 axios &#xff0c;那么如何在自己的项目中自己封装 axios 二、分析 1. 安装axios np…...

Hadoop小结(下)

HDFS 集群 HDFS 集群是建立在 Hadoop 集群之上的&#xff0c;由于 HDFS 是 Hadoop 最主要的守护进程&#xff0c;所以 HDFS 集群的配置过程是 Hadoop 集群配置过程的代表。 使用 Docker 可以更加方便地、高效地构建出一个集群环境。 每台计算机中的配置 Hadoop 如何配置集群…...

使用老北鼻AI免费GPT对话解决gun make安装和解析iso9660的问题

在学习解析ISO9660镜像文件时&#xff0c;使用了GPT来了解相关的库和gun make编译器的相关知识。这个过程可真是一言难尽&#xff0c;每个问题的回答都模棱两可都需要去证实&#xff0c;不能直接复制粘贴&#xff0c;也不能说GPT的回答一点用也没有&#xff0c;至少GPT给出了一…...

shell脚本语句

一、语句 一、条件语句 一、以用户为例演示 一、显示当前登录系统的用户信息 w命令 二、显示有多少个用户 w | wc -l 显示有7个用户 前两个是固定标题&#xff0c;从第三个开始才是登录用户&#xff0c;所以要统计数量需要 命令&#xff1a;echo $[$(w | wc -l) -2] 显示…...

【LeetCode】2235.两整数相加

题目 给你两个整数 num1 和 num2&#xff0c;返回这两个整数的和。 示例 1&#xff1a; 输入&#xff1a;num1 12, num2 5 输出&#xff1a;17 解释&#xff1a;num1 是 12&#xff0c;num2 是 5 &#xff0c;它们的和是 12 5 17 &#xff0c;因此返回 17 。示例 2&…...

springboot sl4j2 写入日志到mysql

问题描述 springboot初始化的时候&#xff0c;会先初始化日志然后再加载数据源如果用配置文件进行初始化&#xff0c;那么会出现数据源没有加载成功&#xff0c;导致空指针异常 报错排查如下&#xff1a; 搜索报错信息&#xff0c;OBjects.invoke is Null打断点发现。dataso…...

数值分析实战指南:北航研究生大作业解析与代码实现

1. 数值分析大作业的核心价值 第一次接触北航研究生数值分析大作业时&#xff0c;我和大多数同学一样感到无从下手。直到在实验室熬了三个通宵后&#xff0c;我才真正明白这份作业的独特价值——它完美架起了理论与实践的桥梁。这份大作业最精妙之处在于&#xff0c;它不仅仅是…...

ZYNQ7010核心板硬件设计实战——从原理图到PCB的工程化思考

1. 从零开始构建ZYNQ7010核心板 第一次接触ZYNQ7010这种集成了ARM处理器和FPGA的SoC芯片时&#xff0c;我既兴奋又忐忑。这种混合架构的芯片确实强大&#xff0c;但随之而来的硬件设计复杂度也让人头疼。特别是当看到官方推荐的8层甚至12层PCB方案时&#xff0c;作为个人开发者…...

用Multisim 14.0和AD620/OP07,手把手教你搭建一个能用的简易心电放大电路

从零开始构建心电放大电路&#xff1a;Multisim 14.0与AD620/OP07实战指南 在生物医学信号处理领域&#xff0c;心电信号采集一直是极具挑战性的课题。想象一下&#xff0c;当医生将电极贴在你胸口时&#xff0c;那些微弱的电信号是如何被放大并转化为清晰波形图的&#xff1f;…...

保姆级教程:在绿联NAS上用Docker Compose一键部署PaddleOCR,打造本地私有化OCR服务

绿联NASDocker Compose极简部署PaddleOCR&#xff1a;零命令行打造私有文字识别服务 家里堆积如山的合同发票需要电子化&#xff1f;团队内部敏感文档不敢用云端OCR&#xff1f;绿联NAS用户现在可以抛开复杂命令&#xff0c;用Docker Compose三分钟搭建企业级文字识别服务。本文…...

别再混淆了!JavaScript与Java的10个本质区别(附常见面试题解析)

别再混淆了&#xff01;JavaScript与Java的10个本质区别&#xff08;附常见面试题解析&#xff09; 当面试官问"Java和JavaScript有什么区别"时&#xff0c;超过60%的初级开发者会给出"它们就像汽车和地毯的关系"这类玩笑式回答。但真正理解这两种语言的核…...

ASP.NET Core 认证鉴权实战:JWT、Policy 与权限边界怎么落地

实现场&#xff1a;一个后台退款接口原本只允许财务角色调用&#xff0c;但线上排查发现&#xff0c;普通运营账号只要拿到有效 token&#xff0c;也能调用成功。根因并不复杂&#xff1a;接口加了 [Authorize]系统只校验“是否登录”没有继续校验角色、权限和资源归属结果就是…...

Windows下Nessus破解版安装全攻略:从下载到解除限制一步到位

Windows系统下Nessus安全扫描工具的正规安装与使用指南 在网络安全领域&#xff0c;漏洞扫描是保障系统安全的重要环节。Tenable Nessus作为业内知名的漏洞扫描工具&#xff0c;以其全面的漏洞检测能力和稳定的性能赢得了众多安全从业者的青睐。本文将详细介绍如何在Windows环境…...

7天玩转Open-LLM-VTuber:从零基础到打造专属AI虚拟主播

7天玩转Open-LLM-VTuber&#xff1a;从零基础到打造专属AI虚拟主播 【免费下载链接】Open-LLM-VTuber Talk to LLM by voice with Live2D that runs offline on multiple platforms. An attempt to build AI VTuber neuro-sama. 项目地址: https://gitcode.com/gh_mirrors/op…...

TripoSR:0.5秒从单图到3D模型,开源3D重建的革命性工具

TripoSR&#xff1a;0.5秒从单图到3D模型&#xff0c;开源3D重建的革命性工具 【免费下载链接】TripoSR 项目地址: https://gitcode.com/GitHub_Trending/tr/TripoSR TripoSR是一款由Tripo AI与Stability AI联合开发的开源单图像3D重建模型&#xff0c;能够在短短0.5秒…...

源码编译实战:定制rpath与interpreter实现高版本glibc程序向下兼容部署

1. 为什么需要高版本glibc程序向下兼容 最近在给客户部署AI推理服务时遇到一个典型问题&#xff1a;开发环境用的是Ubuntu 20.04&#xff08;glibc 2.31&#xff09;&#xff0c;而生产环境是CentOS 7&#xff08;glibc 2.17&#xff09;。直接拷贝编译好的程序运行时&#xff…...