using Avalonia.Data.Converters; using Avalonia.Media; using HeroIconsAvalonia.Enums; using System; using System.Globalization; namespace MyAvaloniaApp.Converters; /// /// 字符串转换器类 /// public static class StringConverters { /// /// 角色到颜色的转换器 /// public static readonly IValueConverter RoleToColorConverter = new RoleToColorConverter(); /// /// 状态到颜色的转换器 /// public static readonly IValueConverter StatusToColorConverter = new StatusToColorConverter(); /// /// 空值到布尔值的转换器 /// public static readonly IValueConverter NullToBoolConverter = new NullToBoolConverter(); /// /// 布尔值到图标类型的转换器 /// public static readonly IValueConverter BoolToIconConverter = new BoolToIconConverter(); } /// /// 角色到颜色转换器 /// public class RoleToColorConverter : IValueConverter { public object? Convert(object? value, Type targetType, object? parameter, CultureInfo culture) { if (value is string role) { return role switch { "管理员" => new SolidColorBrush(Color.FromRgb(220, 53, 69)), // 红色 "编辑" => new SolidColorBrush(Color.FromRgb(255, 193, 7)), // 黄色 "用户" => new SolidColorBrush(Color.FromRgb(40, 167, 69)), // 绿色 _ => new SolidColorBrush(Color.FromRgb(108, 117, 125)) // 灰色 }; } return new SolidColorBrush(Color.FromRgb(108, 117, 125)); } public object? ConvertBack(object? value, Type targetType, object? parameter, CultureInfo culture) { throw new NotImplementedException(); } } /// /// 状态到颜色转换器 /// public class StatusToColorConverter : IValueConverter { public object? Convert(object? value, Type targetType, object? parameter, CultureInfo culture) { if (value is string status) { return status switch { "在线" => new SolidColorBrush(Color.FromRgb(40, 167, 69)), // 绿色 "离线" => new SolidColorBrush(Color.FromRgb(108, 117, 125)), // 灰色 "忙碌" => new SolidColorBrush(Color.FromRgb(220, 53, 69)), // 红色 _ => new SolidColorBrush(Color.FromRgb(108, 117, 125)) // 灰色 }; } return new SolidColorBrush(Color.FromRgb(108, 117, 125)); } public object? ConvertBack(object? value, Type targetType, object? parameter, CultureInfo culture) { throw new NotImplementedException(); } } /// /// 空值到布尔值转换器 /// public class NullToBoolConverter : IValueConverter { public object? Convert(object? value, Type targetType, object? parameter, CultureInfo culture) { return value != null; } public object? ConvertBack(object? value, Type targetType, object? parameter, CultureInfo culture) { throw new NotImplementedException(); } } /// /// 布尔值到图标类型转换器 /// public class BoolToIconConverter : IValueConverter { public object? Convert(object? value, Type targetType, object? parameter, CultureInfo culture) { if (value is bool isExpanded) { return isExpanded ? IconType.ChevronDown : IconType.ChevronRight; } return IconType.ChevronRight; } public object? ConvertBack(object? value, Type targetType, object? parameter, CultureInfo culture) { throw new NotImplementedException(); } }