1
votes

hey i wanna change row foreground color according to a boolean in the model, whats the best way of doing it?

2

2 Answers

6
votes

Define the style as following (IsBlah is a boolian property):

    <Style x:Key="MyRowStyle" TargetType="{x:Type dg:DataGridRow}">
        <Setter Property="Background" Value="White"/>
        <Setter Property="Foreground" Value="DarkBlue"/>            
        <Style.Triggers>
            <DataTrigger Binding="{Binding IsBlah}" Value="False" >
                <Setter Property="Background" Value="DarkGray" />
                <Setter Property="Foreground" Value="White" />
            </DataTrigger>
        </Style.Triggers>
    </Style>

Your DataGrid should have a custom RowStyle. (RowStyle="{StaticResource MyRowStyle})

1
votes

This is basically the same answer as Boris, but here's the syntax if you prefer to define the style directly within the DataGrid definition.

Note: Blend won't give you a live preview of this so you'll have to run it

<DataGrid>      
    <DataGrid.RowStyle>
        <Style TargetType="DataGridRow">
            <Style.Triggers>
                <DataTrigger Binding="{Binding HasErrors}" Value="True">
                    <Setter Property="Foreground" Value="Red"/>
                </DataTrigger>      
            </Style.Triggers>
        </Style>
    </DataGrid.RowStyle>
</DataGrid>