WPF DataGrid 全属性详解(分类整理+实用说明)

WPF DataGrid 全属性详解(分类整理+实用说明)

前言

在 WPF 开发中,DataGrid 是展示和编辑表格数据的核心控件,其属性覆盖布局、数据绑定、交互、样式等多个维度。很多开发者在使用时容易混淆各类属性的作用,尤其是新手常因属性配置不当导致功能异常。

本文将 DataGrid 所有核心属性按功能分类整理,包含继承属性和专属属性,附详细说明和使用场景,助力开发者快速上手、精准配置。本文基于 .NET Framework 4.5+ / .NET Core 3.0+ / .NET 5+ 标准版本,所有属性均来自 System.Windows.Controls 命名空间下的 DataGrid 控件。


一、核心基础属性(继承自 FrameworkElement/Control)

这类属性是 WPF 控件的通用属性,DataGrid 直接继承,主要用于控制控件的基础外观和布局,是所有 WPF 控件的共性配置。

属性名 类型 说明
ActualHeight double 只读,控件实际渲染高度
ActualWidth double 只读,控件实际渲染宽度
Background Brush 背景色/背景画刷(如纯色、渐变、图片)
BorderBrush Brush 边框画刷
BorderThickness Thickness 边框厚度(如 BorderThickness="1,2,1,2" 表示四周边框厚度不同)
Cursor Cursor 鼠标悬停时的光标样式(如 Arrow、Hand、IBeam 等)
DataContext object 数据上下文,绑定数据源的核心基础
FontFamily FontFamily 字体家族(如 "Microsoft YaHei"、"Arial")
FontSize double 字体大小
FontStretch FontStretch 字体拉伸(如 Condensed 压缩、Expanded 扩展)
FontStyle FontStyle 字体样式(Normal 正常、Italic 斜体)
FontWeight FontWeight 字体粗细(Normal 正常、Bold 加粗)
Foreground Brush 前景色(即文字颜色)
Height double 控件高度(显式设置,不设置则自适应)
HorizontalAlignment HorizontalAlignment 水平对齐方式(Left 左、Right 右、Center 居中、Stretch 拉伸)
HorizontalContentAlignment HorizontalAlignment 控件内部内容的水平对齐方式
IsEnabled bool 是否启用控件(false 时控件灰显,不响应交互)
IsFocused bool 只读,是否获取焦点
IsHitTestVisible bool 是否响应鼠标/触摸命中测试(false 时无法点击、选中)
IsVisible bool 只读,是否可见
Margin Thickness 外边距,控件与其他控件的间距(如 Margin="5,10" 表示上下10,左右5)
MaxHeight double 最大高度,控件不能超过此高度
MaxWidth double 最大宽度,控件不能超过此宽度
MinHeight double 最小高度,控件不能小于此高度
MinWidth double 最小宽度,控件不能小于此宽度
Opacity double 透明度(0~1,0 完全透明,1 不透明)
Padding Thickness 内边距,控件边框与内部内容的间距
Tag object 自定义附加数据,可存储任意对象(如关联业务数据)
VerticalAlignment VerticalAlignment 垂直对齐方式(Top 上、Bottom 下、Center 居中、Stretch 拉伸)
VerticalContentAlignment VerticalAlignment 控件内部内容的垂直对齐方式
Visibility Visibility 可见性(Visible 可见、Collapsed 折叠(不占空间)、Hidden 隐藏(占空间))
Width double 控件宽度(显式设置,不设置则自适应)

二、DataGrid 专属核心属性(按功能分类)

这类属性是 DataGrid 独有的,直接决定表格的数据展示、交互逻辑、编辑功能等核心特性,是 DataGrid 配置的重点。

  1. 数据绑定与数据源相关

核心作用:关联数据源,控制数据的展示和选中状态,是 DataGrid 实现数据展示的基础。

属性名 类型 说明
ItemsSource IEnumerable 核心数据源,绑定集合(如 List)、DataTable、ObservableCollection 等
DataMember string 当 ItemsSource 为 DataSet 时,指定要显示的表名
SelectedItem object 选中的行数据对象,支持双向绑定(常用于获取/设置当前选中行)
SelectedItems IList 只读,多选模式下选中的所有行(需设置 SelectionMode="Extended" 启用多选)
SelectedIndex int 选中行的索引(-1 表示无选中行)
CurrentItem object 焦点所在的行数据对象(区别于 SelectedItem:焦点不一定选中)
CurrentCell DataGridCellInfo 焦点所在的单元格,包含行和列的完整信息
Items ItemCollection 只读,控件内所有数据项的集合(直接关联 ItemsSource 的数据)
ItemContainerGenerator ItemContainerGenerator 生成行容器(DataGridRow)的辅助对象,可用于获取指定索引的行
  1. 列配置相关

核心作用:控制列的生成方式、排列、大小、样式等,决定表格的列展示形态。

属性名 类型 说明
Columns DataGridColumnCollection 列集合,可手动添加 DataGridTextColumn、DataGridCheckBoxColumn、DataGridComboBoxColumn 等列类型
AutoGenerateColumns bool 是否自动生成列(默认 true,绑定数据源时自动根据数据属性创建列;手动配置列时设为 false)
CanUserAddColumns bool 是否允许用户手动添加列(仅支持自定义场景,默认 false)
CanUserDeleteColumns bool 是否允许用户手动删除列(仅支持自定义场景,默认 false)
CanUserReorderColumns bool 是否允许用户拖拽调整列顺序(默认 true)
CanUserResizeColumns bool 是否允许用户拖拽调整列宽度(默认 true)
CanUserSortColumns bool 是否允许用户点击列头排序(默认 true,点击列头自动按列数据排序)
ColumnHeaderHeight double 列头的高度(默认自适应,可显式设置固定值)
ColumnHeaderStyle Style 列头的样式(目标类型:DataGridColumnHeader,可自定义列头背景、字体、对齐方式等)
ColumnHeaderTemplate DataTemplate 列头的自定义模板(可添加图标、按钮等复杂控件)
ColumnHeaderTemplateSelector DataTemplateSelector 列头模板选择器,根据条件动态切换列头模板
ColumnWidth DataGridLength 默认列宽度,支持三种模式:Auto(自适应内容)、Pixel(固定像素,如 100)、Star(占比,如 * 表示均分剩余空间)
FrozenColumnCount int 冻结列数(左侧固定的列,滚动水平滚动条时不跟随移动,常用于序号列、主键列)
  1. 行配置相关

核心作用:控制行的样式、高度、详情展示等,决定表格行的展示和交互形态。

属性名 类型 说明
RowDetailsTemplate DataTemplate 行详情模板,展开行时显示的额外内容(如显示行的详细信息、子表格等)
RowDetailsTemplateSelector DataTemplateSelector 行详情模板选择器,根据条件动态切换行详情模板
RowDetailsVisibilityMode DataGridRowDetailsVisibilityMode 行详情显示模式:Collapsed(默认,折叠)、Visible(全部展开)、VisibleWhenSelected(仅选中行展开)
RowHeaderStyle Style 行头的样式(目标类型:DataGridRowHeader,行头默认显示行号)
RowHeaderTemplate DataTemplate 行头的自定义模板
RowHeaderWidth double 行头的宽度(默认自适应,可显式设置)
RowHeight double 行的高度(默认 24,可显式设置固定值,或设为 Auto 自适应内容)
AlternatingRowBackground Brush 交替行背景色(需设置 AlternationCount ≥2 启用,实现奇偶行不同颜色的效果)
AlternationCount int 交替行计数(默认 0,设为 2 表示奇偶行交替;设为 3 表示每 3 行交替一次)
CanUserResizeRows bool 是否允许用户拖拽调整行高度(默认 true)
RowStyle Style 行的样式(目标类型:DataGridRow,可自定义行的背景、边框、字体等)
VirtualizingPanel.IsVirtualizing bool 附加属性,是否启用 UI 虚拟化(大数据量时建议启用,提升性能;默认 true)
VirtualizingPanel.VirtualizationMode VirtualizationMode 附加属性,虚拟化模式:Standard(默认,创建可见行)、Recycling(复用行容器,性能更优)
  1. 编辑与交互相关

核心作用:控制表格的编辑权限、编辑触发方式,以及编辑过程中的事件触发。

属性名 类型 说明
IsReadOnly bool 是否只读(禁止编辑所有单元格,默认 false;需禁止编辑时设为 true)
IsTabStop bool 是否参与 Tab 键焦点切换(默认 true)
CanUserAddRows bool 是否显示最后一行空白行(用于新增数据,默认 true;禁止新增时设为 false)
CanUserDeleteRows bool 是否允许用户删除行(按 Delete 键删除选中行,默认 true;禁止删除时设为 false)
EditTriggers DataGridEditTriggers 编辑触发方式:Default(默认,点击单元格或按 Enter 键)、Click(仅点击)、Focus(获取焦点)、None(禁止编辑)
CellEditTemplate DataTemplate 单元格编辑时的模板(如编辑时显示 ComboBox、DatePicker 等控件)
CellEditTemplateSelector DataTemplateSelector 单元格编辑模板选择器,根据条件动态切换编辑模板
BeginningEdit 事件 开始编辑时触发,可在事件中阻止编辑(如判断权限)
CellEditEnding 事件 单元格编辑结束时触发,可在事件中验证数据、取消编辑结果
RowEditEnding 事件 行编辑结束时触发,可用于批量验证行数据
  1. 选择与焦点相关

核心作用:控制表格的选择模式、选择单元,以及焦点的获取和变化。

属性名 类型 说明
SelectionMode DataGridSelectionMode 选择模式:Single(默认,单选)、Extended(多选,按住 Ctrl/Shift 键选择)
SelectionUnit DataGridSelectionUnit 选择单元:Cell(仅选中单元格)、Row(默认,选中整行)、CellOrRowHeader(点击单元格选单元格,点击行头选整行)
IsSynchronizedWithCurrentItem bool 是否与 ItemsControl 的 CurrentItem 同步(默认 true,确保选中项与焦点项一致)
FocusVisualStyle Style 焦点视觉样式,自定义控件获取焦点时的高亮效果
LostFocus 事件 失去焦点时触发
GotFocus 事件 获取焦点时触发
SelectedCells IList 只读,选中的单元格集合(适用于 Cell 选择模式)
SelectedCellsChanged 事件 选中单元格变化时触发,可获取新增选中和取消选中的单元格
  1. 排序、筛选、分组相关

核心作用:控制表格的数据排序、筛选和分组功能,提升数据展示的灵活性。

属性名 类型 说明
SortDescriptions SortDescriptionCollection 排序描述集合,可手动指定排序字段和排序方向(升序/降序),实现默认排序
CanUserSortColumns bool 允许用户排序(已在列配置中列出,核心排序开关)
IsSorting bool 只读,是否正在排序
Sorting 事件 排序时触发,可在事件中自定义排序逻辑(如按自定义规则排序)
Filter Predicate 筛选委托,需结合 CollectionViewSource 使用,实现数据筛选(如筛选出符合条件的行)
GroupStyle Collection 分组样式,绑定分组数据源时生效,可自定义分组头的展示形态
  1. 滚动与布局相关

核心作用:控制滚动条的显示和滚动行为,优化表格在大量数据下的展示体验。

属性名 类型 说明
HorizontalScrollBarVisibility ScrollBarVisibility 水平滚动条可见性:Visible(始终显示)、Hidden(隐藏)、Auto(自动,内容超出时显示)、Disabled(禁用,不滚动)
VerticalScrollBarVisibility ScrollBarVisibility 垂直滚动条可见性(取值同水平滚动条)
ScrollViewer.CanContentScroll bool 附加属性,是否启用逻辑滚动(默认 true,虚拟化依赖此属性;设为 false 时为物理滚动)
ScrollViewer.HorizontalScrollOffset double 水平滚动偏移量,获取或设置当前滚动的水平位置
ScrollViewer.VerticalScrollOffset double 垂直滚动偏移量,获取或设置当前滚动的垂直位置
HeadersVisibility DataGridHeadersVisibility 头可见性:All(默认,显示列头和行头)、Column(仅显示列头)、Row(仅显示行头)、Nobody(都不显示)
  1. 样式与模板相关

核心作用:自定义表格的外观,包括单元格、行、列头的样式,以及整体布局模板。

属性名 类型 说明
CellStyle Style 单元格样式(目标类型:DataGridCell,可自定义单元格背景、边框、字体、对齐方式等)
CellTemplate DataTemplate 单元格默认显示模板(非编辑状态,可添加图片、文本格式化等)
CellTemplateSelector DataTemplateSelector 单元格模板选择器,根据条件动态切换显示模板(如不同数据值显示不同样式)
Template ControlTemplate 控件整体模板,完全自定义 DataGrid 的布局结构(如修改滚动条位置、添加自定义头部)
Validation.ErrorTemplate ControlTemplate 数据验证错误提示模板,自定义数据验证失败时的显示效果(如红色边框、错误图标)
RowValidationErrorTemplate ControlTemplate 行级验证错误模板,自定义行数据验证失败时的显示效果
RowValidationRules Collection 行级验证规则集合,添加自定义的行数据验证规则(如必填字段验证、数据格式验证)
  1. 其他交互属性

核心作用:控制网格线、触控操作、提示信息等辅助交互特性。

属性名 类型 说明
GridLinesVisibility DataGridGridLinesVisibility 网格线可见性:None(无网格线)、Horizontal(仅水平网格线)、Vertical(仅垂直网格线)、All(默认,都显示)
GridLinesBrush Brush 网格线颜色(默认灰色)
HorizontalGridLinesBrush Brush 水平网格线颜色(覆盖 GridLinesBrush)
VerticalGridLinesBrush Brush 垂直网格线颜色(覆盖 GridLinesBrush)
IsManipulationEnabled bool 是否启用触控操作(如平移、缩放,默认 false)
ToolTip object 鼠标悬停提示文本或控件(如显示当前表格的说明信息)

三、补充说明(关键注意点)

  1. 继承链说明:DataGrid 的完整继承链为 Object → DispatcherObject → DependencyObject → Visual → UIElement → FrameworkElement → Control → ItemsControl → DataGrid,本文仅列出核心继承属性,其他次要继承属性可参考官方文档。

  2. 附加属性使用:部分属性为附加属性(如 VirtualizingPanel.IsVirtualizing),在 XAML 中需用"附加属性所有者.属性名"的格式设置,示例:


四、总结

DataGrid 控件的属性繁多,但按功能分类后逻辑清晰:基础属性控制外观布局,专属属性控制数据绑定、列行配置、交互编辑、排序筛选等核心功能。实际开发中,无需记忆所有属性,可根据需求场景(如数据展示、编辑、大数据优化)查找对应分类的属性进行配置。

如果需要某类属性的具体使用示例(如列自定义配置、虚拟化实现、数据验证),可以在评论区留言,后续会补充对应的实战教程。

✨ 创作不易,点赞+收藏+关注,后续分享更多 WPF 开发干货!

📢 本文同步发布于 CSDN,转载请注明出处。

相关推荐
Greyscarf3 小时前
WPF使用MxDraw云图插件入门
wpf·mxdraw云图·mxdraw
执笔论英雄1 天前
【大模型推理】VLLM 引擎使用
wpf·vllm
LateFrames1 天前
动画性能比对:WPF / WinUI3 / WebView2
wpf·webview·用户体验·winui3
阿湯哥2 天前
多智能体架构深度解析:企业落地如何选择Skills与SubAgents?
架构·wpf
源之缘-OFD先行者2 天前
自研 WPF 鸟情图表:性能与灵活的双重突破
wpf
Moqiqiuzi2 天前
WPF单实例启动
wpf
Moqiqiuzi2 天前
WPF程序打包成安装包的方法
wpf
码农水水3 天前
国家电网Java面试被问:TCP的BBR拥塞控制算法原理
java·开发语言·网络·分布式·面试·wpf
码农水水3 天前
京东Java面试被问:HTTP/2的多路复用和头部压缩实现
java·开发语言·分布式·http·面试·php·wpf