发布时间:2025-12-09 21:55:41 浏览次数:3
前面介绍过使用DataGrid简单绑定一个数据模型,接着介绍DataGrid的一些详细操作。
参考:C# WPF DataGrid的使用
定制DataGrid控件基本外观属性
RowBackground、AlternatingRowBackground:用于绘制每行背景的画刷(RowBackground),并且决定是否使用不同的背景颜色绘制交替行。在默认情况下,DataGrid控件为奇数行提供白色,为偶数行提供淡灰色背景。
ColumnHearderHeight:位于DataGrid控件顶部的列标题行的高度。
ColumnWidth:用于设置每列默认宽度的尺寸改变模式。
RowHeight:每行的高度。
GridLinesVisibility确定是否显示网格线DataGridGridlines枚举值
VerticalGridLinesBrush用于绘制列之间网格线的画刷
HorizontalGridLinesBrush用于绘制行之间网格线的画刷
HorizontalScrollBarVisibility、VerticalScrollBarVisibility确定是否显示滚动条ScrollBarVisibility枚举值,当需要时显示(auto)、总是显示(Visible)或总是不显示(Hidden)
CanUserResizeColumns属性设置为false来阻止用户改变DataGrid控件中列的尺寸
CanUserReorderColumns属性设置为true可以拖动列的位置,如果不希望用户具有这种重新排序的能力,可以将DataGrid控件的 CanUserReorderColumns属性或特定列的CanUserReorder属性设置为false。
定义列
为使上面的标记能够工作,必须将sys和col前缀映射到合适的.Net名称空间
<Window ...xmlns:col="clr-namespace:System.Collections;assembly=mscorlib"xmlns:sys="clr-namespace:System;assembly=mscorlib">DataGridTemplateColumn的应用
DataGridTemplateColumn定义了两个模板:一个用于数据显示(CellTemplate);另一个用于数据编辑(CellEditingTemplate)
设置列的格式和样式
可以使用TextBlock元素格式相同的方式设置 DataGridTextColumn元素的格式,然而 DataGridTextColumn没有提供TextBlock的所有属性。如希望创建显示多行文本的列,将无法设置经常使用额Wrapping属性,这时需要改变ElementStyle属性。
本质上,ElementStyle属性用于创建应用于DataGrid单元格内部元素的样式。
对于简单的 DataGridTextColumn,该元素是TextBlock。
对于DataGridCheckBoxColumn,单元格内部的元素是复选框。
对于DataGridTemplateColumn,单元格内部的元素是在数据模板中创建的任何元素。
简单实例
<DataGridTextColumn Header="Column2" Binding="{Binding LastName}" Width="1*"><DataGridTextColumn.ElementStyle><Style TargetType="TextBlock"><Setter Property="TextWrapping" Value="Wrap"/></Style></DataGridTextColumn.ElementStyle></DataGridTextColumn>如果希望为每一列中的单元格应用格式化设置,使用DataGrid.RowStyle属性配置样式最方便。
<DataGrid Name="DG1" ItemsSource="{Binding}" AutoGenerateColumns="False" AlternationCount="2" CanUserSortColumns="False" HorizontalGridLinesBrush="#dddddd" VerticalGridLinesBrush="#dddddd"> <DataGrid.RowStyle><Style TargetType="{x:Type DataGridRow}"><Setter Property="FontSize" Value="12"/><Style.Triggers><Trigger Property="ItemsControl.AlternationIndex"Value="0"><Setter Property="Background" Value="#cbedfa" /></Trigger><Trigger Property="ItemsControl.AlternationIndex"Value="1"><Setter Property="Background" Value="#FFFFFFFF" /></Trigger></Style.Triggers></Style></DataGrid.RowStyle> </DataGrid>设置行的格式
使用LaodRow事件。还有DataGridTemplateColumn。
显示行细节
能够详细描述文本
RowDetailsVisibilityMode=“Visible”:同时显示所有行的细节;“VisibleWhenSelected”显示所选行的细节;Collapsed:不会为任何行显示细节。
冻结列
冻结的列位于DataGrid控件的左边。只需设置DataGrid.FrozenColumnCount属性为大于0的数。
其他一些功能
1.让DataGrid中列标题居中
2.让内容单元格居中显示
引入样式文件
3.隔行变色
等价于属性 Background=“AliceBlue” AlternatingRowBackground=“AliceBlue”
4.鼠标滑过变色
5.选中行变色
<DataGrid.CellStyle> <Style TargetType="DataGridCell"> <Setter Property="BorderThickness" Value="0"/> <Setter Property="MinWidth" Value="85"/> <Style.Triggers> <Trigger Property="IsSelected" Value="True"> <Setter Property="Background" Value="LightBlue"/> <Setter Property="Foreground" Value="White"/> </Trigger> </Style.Triggers> </Style> </DataGrid.CellStyle>一些常用属性解释
属性解释:
1、AlternationCount:设置ItemControl中交替项的数据,可以理解为各几行换色设置
2、AutoGenerateColumns:是否自动生成列
3、CanUserAddRows:是否允许添加新行
4、CanUserDeleteRows:是否允许删除行
5、CanUserReorderColumns:是否允许用户通过使用鼠标拖拽列标题,更改列的显示顺序
6、CanUserResizeColumns:是否允许用户通过鼠标更改列的宽度
7、CanUserResizeRows:是否允许用户通过鼠标更改行的高度
8、ColumnHeaderHeight:列表头的高度
9、GridLinesVisibility:指示显示哪些网格线,包括:None,Horizontal,Vertical,All
10、HeadersVisibility:指示行和列标题的可见性,包括:None,Column,Row,All
一个非常简单的DataGrid
原文链接:https://blog.csdn.net/weixin_42930928/article/details/87776996