为什么这不会改变我的WPF Datagrid标题的颜色?

时间:2009-03-26 16:37:13

标签: wpf xaml datagrid wpfdatagrid

我在代码后面填充我的数据网格,如下所示:

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>

1 个答案:

答案 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>