Как установить каждый ряд в сетке данных с другим цветом - PullRequest
2 голосов
/ 08 сентября 2011

У меня есть окно журнала с сеткой данных, каждая запись записывается в новую строку в сетке данных.

Я хочу установить цвет строки в соответствии с серьезностью сообщения журнала (например, фатальное исключение = красный, информация = зеленый).

Как мне сделать это с помощью привязки или динамического ресурса?

Заранее спасибо!

1 Ответ

4 голосов
/ 08 сентября 2011

Предполагая, что это не для Silverlight, вы можете использовать DataTriggers.

Предположим, Severity выставлен как собственность из ваших предметов ...

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

Для серебряного света вы должны использовать конвертеры ...

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

В методе StatusToColorConveter.Convert () ...

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

Дайте мне знать, если это поможет.

...