using System.Globalization; using System.Windows; using System.Windows.Data; using System.Windows.Media; namespace CursorLang.Views; /// /// Показывает элемент, только если значение совпадает с параметром. /// Нужен, чтобы настройки курсора и экрана не показывались одновременно. /// public sealed class EnumToVisibilityConverter : IValueConverter { public object Convert(object? value, Type targetType, object? parameter, CultureInfo culture) => value?.ToString() == parameter?.ToString() ? Visibility.Visible : Visibility.Collapsed; public object ConvertBack(object? value, Type targetType, object? parameter, CultureInfo culture) => Binding.DoNothing; } /// /// Цвет в запись вида «#RRGGBB»: альфа не показывается, потому что /// за прозрачность отвечает отдельная настройка. /// public sealed class ColorToHexConverter : IValueConverter { public object Convert(object? value, Type targetType, object? parameter, CultureInfo culture) => value is Color color ? $"#{color.R:X2}{color.G:X2}{color.B:X2}" : string.Empty; public object ConvertBack(object? value, Type targetType, object? parameter, CultureInfo culture) => Binding.DoNothing; } /// /// Цвет в кисть — для образцов палитры в списке. /// public sealed class ColorToBrushConverter : IValueConverter { public object Convert(object? value, Type targetType, object? parameter, CultureInfo culture) => value is Color color ? new SolidColorBrush(color) : Brushes.Transparent; public object ConvertBack(object? value, Type targetType, object? parameter, CultureInfo culture) => value is SolidColorBrush brush ? brush.Color : Binding.DoNothing; }