using SWRIS.Models; using System; using System.Collections.ObjectModel; using System.Globalization; using System.Windows.Data; using System.Windows.Media; namespace SWRIS.Converters { public class ConnectivityFaultToColorConverter : IMultiValueConverter { private static readonly Color OnlineColor = Color.FromRgb(0x00, 0xFF, 0x78); private static readonly Color OfflineColor = Color.FromRgb(0x78, 0x86, 0xB2); private static readonly Color FaultColor = Color.FromRgb(0xFF, 0x00, 0x00); private static readonly SolidColorBrush OnlineBrush; private static readonly SolidColorBrush OfflineBrush; private static readonly SolidColorBrush FaultBrush; static ConnectivityFaultToColorConverter() { OnlineBrush = new SolidColorBrush(OnlineColor); OfflineBrush = new SolidColorBrush(OfflineColor); FaultBrush = new SolidColorBrush(FaultColor); OnlineBrush.Freeze(); OfflineBrush.Freeze(); FaultBrush.Freeze(); } public object Convert(object[] values, Type targetType, object parameter, CultureInfo culture) { if (values.Length < 3 || !(values[0] is bool isConnected) || !(values[1] is ObservableCollection faults)) { return OfflineBrush; } if (!isConnected) return OfflineBrush; if (faults != null && faults.Count > 0) return FaultBrush; return OnlineBrush; } public object[] ConvertBack(object value, Type[] targetTypes, object parameter, CultureInfo culture) { throw new NotImplementedException(); } } }