← 返回所有博客文章

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

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

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多表头合并教程》系列文章

添加多行头和多列头

 合并表头内容

设置多表样式