WPF DataGrid单元格的条件格式取决于DataType

时间:2013-02-01 13:38:57

标签: wpf wpf-controls wpfdatagrid

我有一个用户控件,它继承自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

1 个答案:

答案 0 :(得分:7)

我会使用DataTrigger使用Converter检查对象是否为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>