WPF之DataGrid表格,自定义表头、自定义单元格

DataGrid控件在WPF中担任着表格的角色,大多用于展现数据,他有着自定义表头、单元格,和数据绑定等效果。

可以展现的数据

可以显示以下几种标签显示不同数据 :

显示文本: DataGridTextColumn

显示复选框: DataGridCheckboxColumn

下拉框: DataGridComboboxColumn

超链接: DataGridHyperlinkColum

常用属性

<!--AutoGenerateColumns 是否自动生成列 设置为false不会自动生成列-->

<!--AutoGenerateColumns 是否删除行-->

<!--CanUserSortColums 是否允许列进行排序-->

<!--GridLinesVisibility设置网格线-->

DataGrid实例

// 设计表格
<DataGrid FontSize="18" FontFamily="宋体"Name="d1"ItemsSource="{Binding}"AutoGenerateColumns="False"CanUserAddRows="False"CanUserSortColumns="False"GridLinesVisibility="All"><!--设置表头样式--><!--TargetType 给表头设置样式--><DataGrid.CellStyle><Style TargetType="DataGridColumnHeader"><Setter Property="HorizontalContentAlignment"Value="Center" /><Setter Property="VerticalContentAlignment"Value="Center" /></Style></DataGrid.CellStyle><!--设置列--><DataGrid.Columns><!--设置表头文本列,显示的数据可以通过bind进行绑定--><DataGridTextColumn Header="姓名" Width="150"Binding="{Binding Name}"><DataGridTextColumn.ElementStyle><!--行内单元格样式--><Style TargetType="TextBlock"><Setter Property="HorizontalAlignment"Value="Center" /><Setter Property="VerticalAlignment"Value="Center" /></Style></DataGridTextColumn.ElementStyle></DataGridTextColumn><!--下拉框列--><DataGridComboBoxColumn Header="班级"x:Name="com"SelectedValueBinding="{Binding ClassId}"></DataGridComboBoxColumn><!--自定义列--><DataGridTemplateColumn><!--自定义列的标题--><DataGridTemplateColumn.Header><TextBlock>编号</TextBlock></DataGridTemplateColumn.Header><!--自定义单元格的模版--><DataGridTemplateColumn.CellTemplate><DataTemplate><TextBlock Text="{Binding ClassId}"></TextBlock></DataTemplate></DataGridTemplateColumn.CellTemplate></DataGridTemplat在CS后台操作数据绑定
数据绑定
// 设计模型类
public class Student
{public string Name { get; set; }  // 学生姓名public string ClassId {  get; set; } // 班级编号
}public class BanJi
{public string ClassName { get; set; } // 班级名称
}// 整理数据并添加
List<Student> list = new List<Student>();
list.Add(new Student(){Name = "迪迦",ClassId = "1000"});
list.Add(new Student(){Name = "赵丽颖",ClassId = "1002"});
list.Add(new Student(){Name = "普京",ClassId = "1003"});// 整理第二个数据源
List<BanJi> list2 = new List<BanJi>();
list2.Add(new BanJi(){ClassName = "挖机一班"});
list2.Add(new BanJi(){ClassName = "上位机"});
list2.Add(new BanJi(){ClassName = "机械视觉"});this.d1.ItemsSource = list;
this.com.ItemsSource = list2;
this.com.DisplayMemberPath = "ClassName";// 展示班级名称
this.com.Selecte

DataGrid常用操作

1.自定义单元格
<!--自定义单元格的模版-->
<DataGridTemplateColumn.CellTemplate><DataTemplate><TextBlock Text="{Binding ClassId}"></TextBlock></DataTemplate>
</DataGridTemplateColumn.CellTemp

2.设置自定义表头局部样式
<!--表头局部样式-->
<DataGrid.ColumnHeaderStyle><Style TargetType="DataGridColumnHeader"><Setter Property="HorizontalAlignment"Value="Center" /><Setter Property="VerticalAlignment"Value="Center" /><Setter Property="Background"Value="Red"/></Style>
</DataGrid.ColumnHe

3.设置自定义单元格局部样式
<!--内容局部样式-->
<DataGridTextColumn.ElementStyle><Style TargetType="TextBlock"><Setter Property="HorizontalAlignment"Value="Center" /><Setter Property="VerticalAlignment"Value="Center" /><Setter Property="Background"Value="Pink" /></Style>
</DataGridTextColumn.Ele

4.设置自定义表头全局样式
<!--表头全局样式-->
<Style x:Key="sty" TargetType="DataGridColumnHeader"><Setter Property="HorizontalAlignment"Value="Center" /><Setter Property="VerticalAlignment"Value="Center" /><Setter Property="Background"Value="Red" />
</Style>// 在datagrid中调用样式的键key
<DataGrid FontSize="18"FontFamily="宋体"Name="data"ColumnHeaderStyle="{StaticResource sty}">

5.设置自定义单元格全局样式
<!--内容全局样式-->
<Style x:Key="styl" TargetType="{x:Type TextBlock}"><Setter Property="HorizontalAlignment" Value="Center"></Setter><Setter Property="VerticalAlignment" Value="Center"/><Setter Property="Background"Value="Pink"></Setter>
</Style>// 在DataGridTextColumn中去调用样式键key
<DataGrid FontSize="18"FontFamily="宋体"Name="data"><DataGrid.Columns><DataGridTextColumn Width="130"Header="姓名"ElementStyle="{StaticResource styl}"></DataGridTextColumn></DataGrid.Column

6.CS后台添加表格数据
// 添加
students.Add(new Student(){Name = "鲁班" + 000,Age = 000 + 19 + "",Sex = "男",Class = 989 + "班",Ah = true});
this.data.Items.Refresh();

7.删除表格数据
students.RemoveAt(data.SelectedIndex);// 获取当前选中元素
data.Items.Refresh(); // 强制更新表格

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/5973.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

SpringCloudAlibaba:3.1dubbo

dubbo 概述 简介 Apache Dubbo 是一款 RPC 服务开发框架&#xff0c;用于解决微服务架构下的服务治理与通信问题 官方提供了 Java、Golang、Rust 等多语言 SDK 实现 Dubbo的开源故事 最早在2008年&#xff0c;阿里巴巴就将Dubbo捐献到开源社区&#xff0c;它很快成为了国内开源…

面试:Mybatis(MyBatis执行流程、延迟加载、MyBatis的缓存)

目录 一、MyBatis执行流程 二、MyBatis是否支持延迟加载&#xff1f; 1、什么是延迟加载&#xff1f; 2、延迟加载的原理 三、MyBatis的缓存 1、一级缓存 2、二级缓存 3、注意事项 一、MyBatis执行流程 读取MyBatis配置文件: mybatis-config.xml加载运行环境和映射文件构…

自定义表单元素组件内容变化触发ElForm重新校验

对于下图中“付费类型”怎么实现有很多种方式&#xff0c;我能想到的是以下两种&#xff1a; Element Plus的RadioButton自定义组件 1. RadioButton 它本质上就是一个单选组件&#xff0c;它跟Element Plus的RadioButton本质上没有区别&#xff0c;无非是外观上的差别。那么…

String::intern()介绍

[Q&A] String::intern() 的作用 String::intern()是一个本地方法&#xff0c;它的作用是如果字符串常量池中已经包含一个等于此String对象的字符串&#xff0c;则返回代表池中这个字符串的String对象的引用&#xff1b;否则&#xff0c;会将此String对象包含的字符串添加到…

Vue阶段练习:组件拆分

页面开发思路 分析页面&#xff0c;按模块拆分组件&#xff0c;搭架子&#xff08;局部或全局注册&#xff09;根据设计图&#xff0c;编写html结构css样式拆分封装通用小组件&#xff08;局部或全局注册&#xff09;将来通过js动态渲染实现功能 BaseBrandItem.vue <templ…

数字旅游以科技创新为动力:推动旅游服务的智能化、网络化和个性化发展,满足游客日益增长的多元化、个性化需求

目录 一、引言 二、科技创新推动旅游服务智能化发展 1、智能化技术的引入与应用 2、智能化提升旅游服务效率与质量 三、科技创新推动旅游服务网络化发展 1、网络化平台的构建与运营 2、网络化拓宽旅游服务渠道与范围 四、科技创新推动旅游服务个性化发展 1、个性化需求…

C语言中细说用typedef和用struct定义结构体的区别及其在单片机C语言开发中的应用

目录 1.struct声明结构体 2.定义结构体变量 3. typedef &#xff08;1&#xff09;采用struct和 typedef struct 声明结构体是有区别的 &#xff08;2&#xff09;对比&#xff0c;使用typedef struct 声明结构体 4.GPIO_TypeDef是结构体名称&#xff0c;而不是结构体变量…

Flutter笔记:谈Material状态属性-为什么FlatButton等旧版按钮就废弃了

Flutter笔记 谈Material状态属性-为什么FlatButton等旧版按钮就废弃了 - 文章信息 - Author: 李俊才 (jcLee95) Visit me at CSDN: https://jclee95.blog.csdn.netMy WebSite&#xff1a;http://thispage.tech/Email: 291148484163.com. Shenzhen ChinaAddress of this artic…

C#知识|Dictionary泛型集合的使用总结

哈喽,你好,我是雷工! 以下是C#Dictionary泛型集合的学习笔记。 01 Dictionary泛型集合 1.1、Dictionary<K,V>通常称为字典, 1.2、其中<K,V>是自定义的,用来约束集合中元素类型。 1.3、在编译时检查类型约束, 1.4、无需装箱拆箱操作, 1.5、操作与哈希表(Ha…

网络工程师必学知识:TCP抓包分析Seq、SYN、ACK的变化过程

网络工程师必学知识:TCP抓包分析Seq、SYN、ACK的变化过程 1.概述:2.抓包3.分析:重点1:重点2:4.总结:1.概述: 下面是我面试时遇到的问题。 问:TCP协议位于tcp/ip协议栈的哪一层呢? 答:这个问题要是答不上来,就不用看下面的内容了。 问:TCP抓包时Seq、SYN、ACK的变化…

Microsoft Threat Modeling Tool 使用(二)

主界面 翻译 详细描述 选择了 “SDL TM Knowledge Base (Core)” 模板并打开了一个新的威胁模型。这个界面主要用于绘制数据流图&#xff08;Data Flow Diagram, DFD&#xff09;&#xff0c;它帮助您可视化系统的组成部分和它们之间的交互。以下是界面中各个部分的功能介绍&a…

2023-2024年Web3行业报告合集(精选13份)

Web3行业报告&#xff08;精选13份&#xff09; 2023-2024年 来源&#xff1a;2023-2024年Web3行业报告合集&#xff08;精选13份&#xff09; 【以下是资料目录】 2023Web3产业发展现状分析及国内外落地实践报告 2023模块化区块链承载Web3.0应用的新模式 2023年AI应用需求…

[基础] Unity Shader:顶点着色器(vert)函数

顶点着色器&#xff08;Vertex Shader&#xff09;是图形渲染的第一个阶段&#xff0c;它的输入来自于CPU。顶点着色器的处理单位是顶点&#xff0c;CPU输入进来的每个顶点都会调用一次顶点着色器函数&#xff0c;也就是我们在Shader代码里所定义的vert函数。本篇我们将会通过顶…

Linux下JVM相关指令详解及案例介绍

目录 博客&#xff1a;Linux下JVM相关指令详解及案例介绍1. jps2. jstack3. jmap4. jstat5. jinfo6. jconsole7. jcmd 博客&#xff1a;Linux下JVM相关指令详解及案例介绍 在Linux环境下&#xff0c;对于Java应用程序的管理和监控&#xff0c;有一系列强大的命令和工具可供使用…

WPF之可翻转面板

1&#xff0c;创建翻转面板的资源字典&#xff1a;FlippPanel.xaml。 无外观控件同样必须给样式指定类型&#xff08; <ControlTemplate TargetType"ss:FlipPanel">&#xff09;&#xff0c;相关详情参考&#xff1a;WPF之创建无外观控件-CSDN博客&#xff09…

场景文本检测识别学习 day06(Vi-Transformer论文精读、MAE论文阅读)

Vi-Transformer论文精读 在NLP领域&#xff0c;基于注意力的Transformer模型使用的非常广泛&#xff0c;但是在计算机视觉领域&#xff0c;注意力更多是和CNN一起使用&#xff0c;或者是单纯将CNN的卷积替换成注意力&#xff0c;但是整体的CNN 架构没有发生改变VIT说明&#x…

React 之 使用 ref 引用值

当你希望组件“记住”某些信息&#xff0c;但又不想让这些信息 触发新的渲染 时&#xff0c;你可以使用 ref 。 //通过从 React 导入 useRef Hook 来为你的组件添加一个 ref import { useRef } from react;export default function Counter() {//在组件内&#xff0c;调用 useR…

React中的高阶组件

高阶组件 HOC 是 React 中用于复用组件逻辑的一种高级技巧。HOC 自身不是 React API 的一部分&#xff0c;它是一种基于 React 组合特性而形成的设计模式 参数为组件&#xff0c;返回值为新函数 const EnhanceComponent higherOrderComponent(WrappedComponent);组件将 pro…

蓝桥杯单片机省赛——第八届“基于单片机的电子钟程序设计与调试”程序部分

往期回顾 第三届蓝桥杯单片机省赛 第四届蓝桥杯单片机省赛 第五届蓝桥杯单片机省赛 第六届蓝桥杯单片机省赛 第七届蓝桥杯单片机省赛 文章目录 往期回顾一、前期准备二、代码详情1.基础代码蜂鸣器/继电器/led/定时器之类的代码 2.按键详解按键写法讲解 3.驱动的处理驱动写法讲…

程序员缓解工作压力——方法分享

前言 作为一名初级程序员&#xff0c;我承认自己在应对工作压力方面还有待提高。在日常工作中&#xff0c;我时常感到压力山大&#xff0c;尤其是在面对复杂问题或紧迫的项目期限时。然而&#xff0c;为了保持高效和持久的工作热情&#xff0c;我还是积极寻求并使用了一…