最近在工作中使用了silverlight,要更改DataGrid的表头背景颜色等样式,试了各种方法没有成功,找了好久的办法,发现要更改模板才能改变。
1.使用Blend For Visual Stido打开要修改的silverlight项目。
2.点击右键。选择编辑其他模板,选择编辑ColumnHeaderStyle。
3.在出现的style里面设置自己的样式,根据MSDN上的文档显示,如果想要改变背景颜色,要在ControlTemple中设置一个名字为BackgroundRectangle矩形框,该矩形框的填充颜色就是表头的背景颜色。要有<ContentPresenter/>来盛放表头的内容,如没<ContentPresenter/>,表头是显示不出来的。
我的样式代码如下:
<Style x:Key="DataGridColumnHeaderStyle1" TargetType="sdk:DataGridColumnHeader"> <Setter Property="BorderBrush" Value="White"/> <Setter Property="BorderThickness" Value="1"/> <Setter Property="Margin" Value="1"/> <Setter Property="FontFamily" Value="SimHei"/> <Setter Property="Height" Value="15"/> <Setter Property="Template"> <Setter.Value> <ControlTemplate> <Grid x:Name="Root"> <Grid.ColumnDefinitions> <ColumnDefinition/> <ColumnDefinition Width="Auto" /> </Grid.ColumnDefinitions> <Rectangle x:Name="BackgroundRectangle" Fill="#189CE8" Stretch="Fill" Grid.ColumnSpan="2"/> <ContentPresenter/> </Grid> </ControlTemplate> </Setter.Value> </Setter> </Style>
4.msdn的官网链接:https://msdn.microsoft.com/zh-cn/library/cc278066(VS.95).aspx;
关于ContentPresenter的详细介绍可参考:http://www.cnblogs.com/Clingingboy/archive/2010/12/20/1911388.html;