我在代码后面填充我的数据网格,如下所示:
var customers = from c in _db.Customers
select c;
TheDataGrid.ItemsSource = customers.ToList();
在我的下面的XAML中,DataGrid.RowBackground可以正常工作,但是 DataGridHeaderBorder在运行时代码隐藏中获取错误“在使用ItemsSource之前项目列表必须为空”。
这很奇怪,因为我只是想改变Datagrid标头的颜色,并且它会遇到ItemsSource的问题。如果我取出DataGridHeaderBorder行,它可以正常工作。
那么如何简单地更改数据网格上列标题的颜色呢?
<toolkit:DataGridHeaderBorder Background="yellow"/>
<toolkit:DataGrid.RowBackground>
<LinearGradientBrush EndPoint="-0.136,-0.163" StartPoint="1.291,1.248">
<GradientStop Color="#FFA8A929" Offset="0.004"/>
<GradientStop Color="#FFF7F7ED" Offset="0.991"/>
</LinearGradientBrush>
</toolkit:DataGrid.RowBackground>
答案 0 :(得分:1)
每次将元素放在元素中时,XAML解析器必须决定子元素是否是复杂的属性赋值(正如您尝试的那样),或者您是否希望子元素成为“内容”父元素。因为您的问题“DataGridHeaderBorder”标记不以“toolkit:DataGrid”开头,所以假设您正在尝试将DataGrid的content属性(恰好是Items)设置为此值。
我无法尝试这个,但我猜你需要用以下内容替换问题标签:
<toolkit:DataGrid.RowHeaderStyle>
<Style TargetType="{x:Type toolkit:DataGridRowHeader}">
<Setter Property="Background" Value="Yellow" />
</Style>
</toolkit:DataGrid.RowHeaderStyle>