为什么它不起作用?
dataGrid.Columns.Add(new DataGridTextColumn()
{
Header = new DataGridColumnHeader
{
Name = eName,
Background = Brushes.AliceBlue
}
});
错误是:
PresentationFramework.dll中出现'System.InvalidOperationException'类型的第一次机会异常
附加信息:元素不能是其自己的父母。
答案 0 :(得分:1)
不幸的是Header不是一个控件。这是一个内容。 您可以使用 HeaderStyle
达到目标Style headerStyle = new Style(typeof(DataGridColumnHeader));
headerStyle.Setters.Add(
new Setter(DataGridColumnHeader.BackgroundProperty, Brushes.AliceBlue));
lb.Columns.Add(new DataGridTextColumn()
{
Header = eName,
HeaderStyle = headerStyle
});
答案 1 :(得分:0)
虽然Header应该是对象类型,但是不允许添加另一个DataGridColumn类型。这就是发生异常的原因。您基本上是嵌套您的列是非法的。它最好是另一种控制作为其内容。
例如,这将基于您的代码:
dataGrid.Columns.Add(new DataGridTextColumn()
{
Header = new Button()
{
Content = "string",
Background = Brushes.AliceBlue
}
});
如果没有backround或任何其他UI细节,您实际上可以这样做:
dataGrid.Columns.Add(new DataGridTextColumn()
{
Header = "header string"
});