在Silverlight中更改Datagrid标头的背景色
我想更改Silverlight中Datagrid标头的背景色。尽管Datagrid没有公开标头背景属性,但它确实有ColumnHeaderStyle的属性。使用DaniCE之前为单个列建议的技术,我们可以为所有标题列(包括右侧的空白)替换标题模板。替换标题的整个模板的缺点是,我们丢失了默认标题模板中的排序箭头和分隔符。幸运的是,我们可以使用提取正在使用的默认模板,然后修改其副本 在这里,我提供了一个快速示例,它将把列标题的背景更改为浅蓝色,同时保留分隔符和排序。查看中的默认DataGridColumnHeader模板,了解如何在鼠标悬停在ColumnHeader上时修改背景在Silverlight中更改Datagrid标头的背景色,silverlight,datagrid,silverlight-2.0,Silverlight,Datagrid,Silverlight 2.0,我想更改Silverlight中Datagrid标头的背景色。尽管Datagrid没有公开标头背景属性,但它确实有ColumnHeaderStyle的属性。使用DaniCE之前为单个列建议的技术,我们可以为所有标题列(包括右侧的空白)替换标题模板。替换标题的整个模板的缺点是,我们丢失了默认标题模板中的排序箭头和分隔符。幸运的是,我们可以使用提取正在使用的默认模板,然后修改其副本 在这里,我提供了一个快速示例,它将把列标题的背景更改为浅蓝色,同时保留分隔符和排序。查看中的默认DataGridCol
希望这有帮助 我想出了一个“干净”的解决方案。。希望它对你有用。
我只是重写了DataGrid,并公开了GetTemplateChild方法。使用它,您可以访问DataGridColumnHeaderPresenter及其包含的DataGridColumnHeaders
1) 覆盖数据网格
/// <summary>
/// Extends the DataGrid so that it's possible to access the template objects
/// </summary>
public class DataGridEx : System.Windows.Controls.DataGrid
{
/// <summary>
/// Exposes Template items
/// </summary>
public Object GetTemplateObject(String name)
{
return this.GetTemplateChild(name);
}
}
//
///扩展DataGrid,以便能够访问模板对象
///
公共类DataGridEx:System.Windows.Controls.DataGrid
{
///
///公开模板项
///
公共对象GetTemplateObject(字符串名称)
{
返回此.GetTemplateChild(名称);
}
}
2) 改变背景
DataGridEx grid=新DataGridEx()
。。。应用模板后
DataGridColumnHeadersPresenter obj=DataGrid.GetTemplateObject(“ColumnHeadersPresenter”)作为DataGridColumnHeadersPresenter
DataGridColumnHeader h=obj.Children[0]作为DataGridColumnHeader
h、 背景=新的SolidColorBrush(颜色为红色) 这对大卫非常有帮助!不幸的是,这不会使标题文本居中对齐。。尽管我什么都试过了
/// <summary>
/// Extends the DataGrid so that it's possible to access the template objects
/// </summary>
public class DataGridEx : System.Windows.Controls.DataGrid
{
/// <summary>
/// Exposes Template items
/// </summary>
public Object GetTemplateObject(String name)
{
return this.GetTemplateChild(name);
}
}