C1DataGrid for WPF多表头合并教程:设置多表头样式

发布时间:2015/08/03 00:08 发布者:Alice

返回博客中心

在之前的章节,我们了解到了如何添加多表头,以及合并多表头。

本文将分为两部分来自定义样式:

1.自定义列头。

2.自定义行头。

自定义Column Headers

ColumnHeaders可以通过XAML和代码实现自定义。首先我们来重点介绍通过XAML自定义。代码的方式将在下一部分Row heaader自定义部分解释。

首先开始定义一个Gradient笔刷来给headers应用。

代码参考:

<LinearGradientBrush x:Key="DataGridHeaderBackGround" EndPoint="0.5,1" StartPoint="0.5,0">
<GradientStop Color="#FFC8FFC8" Offset="1" />
<GradientStop Color="#FF64FF64" Offset="0" />
</LinearGradientBrush>

 

第二步涉及到创建style给Column headers。因为column headers由"DataGridColumnHeaderPresenter’"定义,它的TargetType是用于这种样式。

<!-- Column header style -->
<Style x:Key="C1ColumnHeader" TargetType="c1:DataGridColumnHeaderPresenter">
<Setter Property="Background" Value="{StaticResource DataGridHeaderBackGround}"/>
<Setter Property="HorizontalContentAlignment" Value="Center" />
<Setter Property="Foreground" Value="Red"/>
</Style>

 

然后简单的将样式给C1DataGrid。

<!-- Set Style on DataGrid -->
<Style TargetType="c1:C1DataGrid">
<Setter Property="ColumnHeaderStyle" Value="{StaticResource C1ColumnHeader}"/>
</Style>

在执行了XAML片段后,C1DataGrid呈现如下:

 

自定义RowHeaders

 上面我们介绍了如何自定义column headers,但是自定义Row headers和它并不是一种方法。

通过XAML的方式并不能自定义特殊的Row headers。

 

下面的部分讨论自定义rowheader的方式,通过代码来实现。

通过使用LoadedCellPresent事件,我们找到对应的子对象然后设置需要的样式。

void grid_LoadedCellPresenter(object sender, DataGridCellEventArgs e)
{
   if (e.Cell.Presenter.Content.GetType() == typeof(C1.Silverlight.DataGrid.DataGridRowHeaderPresenter))
   {
     System.Windows.Controls.ContentControl cc = (e.Cell.Presenter.Content as System.Windows.Controls.ContentControl);
     cc.Background = (LinearGradientBrush)this.Resources["DataGridHeaderBackGround"];
     cc.HorizontalContentAlignment = System.Windows.HorizontalAlignment.Center;
   }
}

 

同样的,我们可以通过给DataGridColumnHeaderPresenter设置样式的方式自定义column headers。

if (e.Cell.Presenter.Content.GetType() == typeof(C1.Silverlight.DataGrid.DataGridColumnHeaderPresenter))
{
   System.Windows.Controls.ContentControl cc = (e.Cell.Presenter.Content as System.Windows.Controls.ContentControl);
   cc.Background = (LinearGradientBrush)this.Resources["DataGridHeaderBackGround"];
   cc.HorizontalContentAlignment = System.Windows.HorizontalAlignment.Center;
}

 

现在我们通过上面的设置,得到如下的效果:

 

你可以通过上一篇博客 合并表头内容下载示例,并添加代码得到如上的效果。

 

C1DataGrid的在线英文产品文档地址:

http://helpcentral.componentone.com/nethelp/C1datagridWPF/

如果你对C1DataGrid感兴趣,请到我们的官网下载最新版本:/download/?pid=6

如果你有疑问,可以到GCDN论坛获得技术支持:http://gcdn.grapecity.com.cn/showforum-138.html

 

C1DataGrid for WPF多表头合并教程》系列文章

添加多行头和多列头

 合并表头内容

设置多表样式

 

 

 


关于葡萄城

赋能开发者!葡萄城是专业的集开发工具、商业智能解决方案、低代码开发平台于一身的软件和服务提供商,为超过 75% 的全球财富 500 强企业提供服务。葡萄城专注控件软件领域30年,希望通过模块化的开发控件、灵活的低代码应用开发平台等一系列开发工具、解决方案和服务,帮助开发者快速响应复杂多变的业务需求,最大程度地发挥开发者的才智和潜能,让开发者的 IT 人生更从容更美好。

了解详情,请访问葡萄城官网