LogLevelBrushConverter.cs 1.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142
  1. using System;
  2. using System.Globalization;
  3. using System.Windows.Data;
  4. using System.Windows.Media;
  5. namespace TeamAAS.Logging.Controls
  6. {
  7. /// <summary>
  8. /// 日志类别 → 前景色画刷转换器(颜色与流程节点状态色保持一致)。
  9. /// Info=蓝、Warning=橙、Error=红。
  10. /// </summary>
  11. public class LogLevelBrushConverter : IValueConverter
  12. {
  13. private static readonly Brush InfoBrush = Freeze("#2D6CDF");
  14. private static readonly Brush WarningBrush = Freeze("#FF9800");
  15. private static readonly Brush ErrorBrush = Freeze("#F44336");
  16. private static Brush Freeze(string hex)
  17. {
  18. var brush = new SolidColorBrush((Color)ColorConverter.ConvertFromString(hex));
  19. brush.Freeze();
  20. return brush;
  21. }
  22. public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
  23. {
  24. if (value is LogLevel category)
  25. {
  26. switch (category)
  27. {
  28. case LogLevel.Warning: return WarningBrush;
  29. case LogLevel.Error: return ErrorBrush;
  30. default: return InfoBrush;
  31. }
  32. }
  33. return InfoBrush;
  34. }
  35. public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
  36. => throw new NotSupportedException();
  37. }
  38. }