在 Silverlight 中更改 Datagrid 标题的背景颜色
我想更改 Silverlight 中 Datagrid 标题的背景颜色。
I want to change background color of Datagrid header in Silverlight.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
尽管 DataGrid 不公开 Header Background 属性,但它确实有 ColumnHeaderStyle 属性。 使用 DaniCE 之前针对单列建议的技术,我们可以替换所有标题列的标题模板,包括右侧的空白区域。 替换标题的整个模板的缺点是我们丢失了默认标题模板中存在的排序箭头和分隔符。 幸运的是,我们可以使用 模板browser 提取正在使用的默认模板,然后修改它的副本。
在这里,我整理了一个简单的示例,它将列标题的背景更改为浅蓝色,同时保留分隔符和排序。 查看 模板浏览器来查看当鼠标悬停在ColumnHeader上时如何处理修改Background。
希望这可以帮助!
Although the DataGrid does not expose a Header Background property, it does have a property for the ColumnHeaderStyle. Using the technique that DaniCE has previously suggested for a single column we can replace the header template for all header columns including the empty space on the right hand side. The down side with replacing the entire template for a header is that we lose the sorting arrows and separators which are present in the default header template. Fortunately we can use a template browser to extract the default template being used and then modify a copy of it.
Here I've thrown together a quick example that will change the background of the column headers to LightBlue while keeping the separators and sorting. Take a look at the default DataGridColumnHeader template in a template browser to see how to deal with modifying the Background when the mouse hovers over the ColumnHeader.
Hope this helps!
我想出了一个“干净”的解决方案..希望它对您有用。
我只是重写了 DataGrid 并公开了 GetTemplateChild 方法。 使用它,您可以访问 DataGridColumnHeaderPresenter 和其中包含的 DataGridColumnHeaders...
1) 覆盖 datagrid
2) 更改背景
DataGridEx grid = new DataGridEx();
...应用模板后...
DataGridColumnHeadersPresenter obj = DataGrid.GetTemplateObject("ColumnHeadersPresenter") as DataGridColumnHeadersPresenter;
DataGridColumnHeader h = obj.Children[0] 作为 DataGridColumnHeader;
h.Background = new SolidColorBrush(Colors.Red);
I came up with a "Clean" solution.. Hopefully it works for you.
I simply override the DataGrid and I exposed the GetTemplateChild method. Using it you can access the DataGridColumnHeaderPresenter and the DataGridColumnHeaders contained in it...
1) Override datagrid
2) Change the background
DataGridEx grid = new DataGridEx();
... after the template is applied ...
DataGridColumnHeadersPresenter obj = DataGrid.GetTemplateObject("ColumnHeadersPresenter") as DataGridColumnHeadersPresenter;
DataGridColumnHeader h = obj.Children[0] as DataGridColumnHeader;
h.Background = new SolidColorBrush(Colors.Red);