在之前的章节,我们了解到了如何添加多表头,以及合并多表头。
本文将分为两部分来自定义样式:
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多表头合并教程》系列文章: