如何使用不同的颜色设置datagrid中的每一行

时间:2011-09-08 08:54:14

标签: wpf xaml data-binding resources

我有一个带有datagrid的日志窗口,每个条目都写入datagrid中的新行。

我想根据日志消息的严重程度设置行颜色(例如,致命异常=红色,信息=绿色)。

我如何使用绑定或动态资源来实现?

提前致谢!

1 个答案:

答案 0 :(得分:4)

假设这不适用于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> 

对于silverlight,你应该使用转换器...

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

如果有帮助,请告诉我。