You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

WinUI3中如何通过C#的Setter修改DataGrid样式字典?

CommunityToolkit.Controls DataGrid 编程式设置样式示例

下面是用C#代码为CommunityToolkit.Controls中的DataGrid添加样式Setter的完整示例,涵盖常用样式修改场景:

1. 引用必要命名空间

确保已添加对应平台的命名空间引用:

using CommunityToolkit.Wpf.Controls; // WPF平台
// WinUI平台替换为:using CommunityToolkit.WinUI.Controls;
using System.Windows;
using System.Windows.Media;

2. 创建并配置Style

你可以基于默认样式构建新Style,或者直接修改DataGrid已有的Style:

方式一:基于默认样式构建新Style

// 创建DataGrid专属Style,继承默认样式(保留原有基础样式逻辑)
var dataGridStyle = new Style(typeof(DataGrid))
{
    BasedOn = Application.Current.Resources["DataGridStyle"] as Style // 若使用自定义基础样式,替换为对应资源键名
};

方式二:直接修改现有DataGrid的Style

// 获取目标DataGrid的Style,若为空则新建
var dataGridStyle = myDataGrid.Style ?? new Style(typeof(DataGrid));

3. 添加样式Setter

通过Setter修改各类样式属性,示例如下:

// 表头背景色
dataGridStyle.Setters.Add(new Setter(DataGrid.ColumnHeaderBackgroundProperty, Brushes.DarkSlateGray));
// 表头文字颜色
dataGridStyle.Setters.Add(new Setter(DataGrid.ColumnHeaderForegroundProperty, Brushes.White));
// 行默认高度
dataGridStyle.Setters.Add(new Setter(DataGrid.RowHeightProperty, 35.0));
// 单元格字体大小
dataGridStyle.Setters.Add(new Setter(DataGridCell.FontSizeProperty, 14));
// 选中行背景色
dataGridStyle.Setters.Add(new Setter(DataGrid.SelectedItemBackgroundProperty, Brushes.LightSteelBlue));
// 网格线可见性与颜色
dataGridStyle.Setters.Add(new Setter(DataGrid.GridLinesVisibilityProperty, DataGridGridLinesVisibility.All));
dataGridStyle.Setters.Add(new Setter(DataGrid.HorizontalGridLinesBrushProperty, Brushes.LightGray));
// 交替行背景色
dataGridStyle.Setters.Add(new Setter(DataGrid.AlternatingRowBackgroundProperty, Brushes.LightGray));

4. 将Style应用到DataGrid

最后把配置好的Style赋值给目标DataGrid:

myDataGrid.Style = dataGridStyle;

内容的提问来源于stack exchange,提问作者Biryukov Georgy

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.28 21:03:32