using System; using System.Collections.Generic; using System.Globalization; using System.Linq; using System.Windows.Data; using System.Windows.Markup; namespace MicaSetup.Design.Converters; [ContentProperty(nameof(Converters))] [ValueConversion(typeof(object), typeof(object))] public class ValueConverterGroup : SingletonConverterBase { public List Converters { get; set; } = new List(); protected override object Convert(object value, Type targetType, object parameter, CultureInfo culture) { if (this.Converters is IEnumerable converters) { var language = culture; return converters.Aggregate(value, (current, converter) => converter.Convert(current, targetType, parameter, language)); } return UnsetValue; } protected override object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture) { if (this.Converters is IEnumerable converters) { var language = culture; return converters.Reverse().Aggregate(value, (current, converter) => converter.Convert(current, targetType, parameter, language)); } return UnsetValue; } }