WPF DataGrid单元格的条件格式取决于数据类型

WPF DataGrid单元格的条件格式取决于数据类型,wpf,wpf-controls,wpfdatagrid,Wpf,Wpf Controls,Wpfdatagrid,我有一个从WPF DataGrid控件继承的用户控件,我将不同的对象列表传递给它,因此,网格的列取决于(即自动生成)我发送的对象类 <userc:cfDataGrid x:Name="grdResults" FontStyle="Normal" FontFamily="Microsoft Sans Serif" FontSize="14" RowHeight="30" AutoGenerateColumns="True" Ma

我有一个从WPF DataGrid控件继承的用户控件,我将不同的对象列表传递给它,因此,网格的列取决于(即自动生成)我发送的对象类

<userc:cfDataGrid x:Name="grdResults" 
    FontStyle="Normal" 
    FontFamily="Microsoft Sans Serif" 
    FontSize="14" 
    RowHeight="30"  

    AutoGenerateColumns="True" 
    Margin="12" 
    AlternatingRowBackground="Gainsboro"  
    AlternationCount="2" 

    ItemsSource="{Binding Results}" 
    IsReadOnly="True" 
    HeaderNames="{Binding Headers}" >
</userc:cfDataGrid> 

现在,我还要通过一个具有SolidColorBrush数据类型属性的对象列表,并能够使用此值设置单元格的背景颜色,而不是显示实际值

我没有在样式等方面做太多的工作,因此我想问一下,是否有人可以给我一些关于如何使用SolidColorBrush数据类型捕获列的建议,并执行上面描述的操作,而不依赖于列的名称

任何指点都将不胜感激


CC

我会使用一个
DataTrigger
来检查对象是否是
SolidColorBrush
,如果是,则设置背景色

大概是这样的:

<DataGrid.Resources>
    <Style TargetType="{x:Type DataGridCell}">
        <Style.Triggers>
            <!-- DataContext will be object for entire data row -->
            <DataTrigger Binding="{Binding MyBrushColorProperty, Converter={StaticResource IsSolidBrushColor}}" Value="True">
                <Setter Property="Background" Value="{Binding MyBrushColorProperty}" />
                <Setter Property="Content" Value="" />
            </DataTrigger>
        </Style.Triggers>
    </Style>
</DataGrid.Resources>


Hi,您可以发布用于生成列的代码吗?您是在DataGrid上设置AutoGenerateColumns=“True”还是实现了自己的自动创建方法?谢谢您的回复。我已经添加了上面的XAML。您想要一个带彩色背景的空单元格,还是要给所有行背景上色?我希望得到一个带彩色背景的空单元格,而不是行。谢谢,我会尝试一下,Rachel,然后再报告。我已经实现了转换器,但似乎“targetType”无论对象属性之一是否为SolidColorBrush,参数始终为System.Object。此外,“value”参数是整行而不是列值。抓我的头@Caledonincoder我忘记了数据项将是整行,而不是特定列的值。您可能必须将其强制转换到转换器中的数据对象,以获取假定为
SolidBrushColor
的属性,或者您可以在绑定中向其传递所需的属性名称,并确保转换器处理
dependencProperty.UnsetValue
或null(如果该属性不存在,我记不起它将使用哪一个)。我将在我的答案中更新XAML。非常感谢,Rachel!我想我就快到了。所以我将把你的标记为答案。