ConnectivityFaultToColorConverter.cs 1.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354
  1. using SWRIS.Models;
  2. using System;
  3. using System.Collections.ObjectModel;
  4. using System.Globalization;
  5. using System.Windows.Data;
  6. using System.Windows.Media;
  7. namespace SWRIS.Converters
  8. {
  9. public class ConnectivityFaultToColorConverter : IMultiValueConverter
  10. {
  11. private static readonly Color OnlineColor = Color.FromRgb(0x00, 0xFF, 0x78);
  12. private static readonly Color OfflineColor = Color.FromRgb(0x78, 0x86, 0xB2);
  13. private static readonly Color FaultColor = Color.FromRgb(0xFF, 0x00, 0x00);
  14. private static readonly SolidColorBrush OnlineBrush;
  15. private static readonly SolidColorBrush OfflineBrush;
  16. private static readonly SolidColorBrush FaultBrush;
  17. static ConnectivityFaultToColorConverter()
  18. {
  19. OnlineBrush = new SolidColorBrush(OnlineColor);
  20. OfflineBrush = new SolidColorBrush(OfflineColor);
  21. FaultBrush = new SolidColorBrush(FaultColor);
  22. OnlineBrush.Freeze();
  23. OfflineBrush.Freeze();
  24. FaultBrush.Freeze();
  25. }
  26. public object Convert(object[] values, Type targetType, object parameter, CultureInfo culture)
  27. {
  28. if (values.Length < 3 ||
  29. !(values[0] is bool isConnected) ||
  30. !(values[1] is ObservableCollection<FaultDataModel> faults))
  31. {
  32. return OfflineBrush;
  33. }
  34. if (!isConnected)
  35. return OfflineBrush;
  36. if (faults != null && faults.Count > 0)
  37. return FaultBrush;
  38. return OnlineBrush;
  39. }
  40. public object[] ConvertBack(object value, Type[] targetTypes, object parameter, CultureInfo culture)
  41. {
  42. throw new NotImplementedException();
  43. }
  44. }
  45. }