| 1234567891011121314151617181920212223242526272829303132333435363738394041424344 | using System;using System.Collections.Generic;using System.Globalization;using System.Linq;using System.Text;using System.Threading.Tasks;using System.Windows.Data;namespace InABox.Wpf;public class MultiFuncConverter(Func<object?[], object?> convert, Func<object?, object?[]?>? convertBack = null, IValueConverter? wrappedConverter = null) : IMultiValueConverter{    public Func<object?[], object?> ConvertFunc { get; set; } = convert;    public Func<object?, object?[]?>? ConvertBackFunc { get; set; } = convertBack;    public IValueConverter? wrappedConverter = wrappedConverter;    public object? Convert(object?[] values, Type targetType, object parameter, CultureInfo culture)    {        var val = ConvertFunc(values);        if(wrappedConverter is not null)        {            return wrappedConverter.Convert(val, targetType, parameter, culture);        }        else        {            return val;        }    }    public object?[]? ConvertBack(object? value, Type[] targetTypes, object parameter, CultureInfo culture)    {        if(wrappedConverter is not null)        {            value = wrappedConverter.Convert(value, typeof(object), parameter, culture);        }        if(ConvertBackFunc is not null)        {            return ConvertBackFunc(value);        }        return null;    }}
 |