wpf - 如何将数据网格中的每一行设置为不同的颜色

标签 wpf xaml data-binding resources

我有一个带有数据网格的日志窗口,每个条目都会写入数据网格中的新行。

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

我如何使用绑定(bind)或动态资源来做到这一点?

提前致谢!

最佳答案

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

请告诉我这是否有帮助。

关于wpf - 如何将数据网格中的每一行设置为不同的颜色,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7345510/

相关文章:

wpf - ItemsControl (WrapPanel) 分组应拆分 GroupItems

c# - 文本字符串代码后面的粗体部分

c# - DynamicResource 的回退值

c# - WPF - 设置 IsOpen=true 时工具提示数据绑定(bind)不起作用

WPF如何绑定(bind)gridview?

c# - 添加新项目后立即添加新行

c# - 从代码绑定(bind)到 WinRT/UWP 中的自定义附加属性

javascript - 自动为数据提供不同的 View

wpf - 如果 WPF 应用程序强制关闭或崩溃,则处理 WPF 关闭事件

c# - 更改 CommandBar (AppBar) 颜色