Maya
Maya

Reputation: 1009

How to set each row in datagrid with a different color

I have a log window with a datagrid, each entry write to new row in the datagrid.

I want to set the row color accordingly to the severity of the log message (e.g. fatal exception = Red , Information = Green).

How do i can do it with binding or dynamic resource?

Thanks in advance!

Upvotes: 2

Views: 777

Answers (1)

Vinit Sankhe
Vinit Sankhe

Reputation: 19885

Assuming that this is not for Silverlight, you can use DataTriggers.

Assume Severity is exposed as a property from your items...

   <Style TargetType="{x:Type toolkit:DataGridRow}">
         <Style.Triggers>
             <DataTrigger Binding="{Binding Severity}" Value="High">
                  <Setter Property="Background" Value="Red"/>
             </DataTrigger> 
             <DataTrigger Binding="{Binding Severity}" Value="Medium">
                  <Setter Property="Background" Value="Yellow"/>
             </DataTrigger> 
             <DataTrigger Binding="{Binding Severity}" Value="Low">
                  <Setter Property="Background" Value="Green"/>
             </DataTrigger> 
         </Style.Triggers>
   </Style> 

For silverlight you should use converters...

   <Style TargetType="{x:Type toolkit:DataGridRow}">
        <Setter Property="Background"
                Value="{Binding Path=Severity,
                                Converter={StaticResource StatusToColorConveter}}"/>
   </Style>

In StatusToColorConveter.Convert() method ...

  switch(value.toString())
  {
      case "High": return Colors.Red;
      case "Medium": return Colors.Yellow;
      case "Low": return Colors.Green;
  }

Let me know if this helps.

Upvotes: 4

Related Questions