using InABox.WPF;
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;
///
/// Warning: this doesn't work for nullable . Use the non-generic instead.
///
public class FuncConverter(Func convert, Func? convertBack = null) : IValueConverter
{
public Func ConvertFunc { get; set; } = convert;
public Func? ConvertBackFunc { get; set; } = convertBack;
public object? Convert(object? value, Type targetType, object parameter, CultureInfo culture)
{
if(value is TIn tIn)
{
return ConvertFunc(tIn);
}
return null;
}
public object? ConvertBack(object? value, Type targetType, object parameter, CultureInfo culture)
{
if(value is TOut tOut && ConvertBackFunc is not null)
{
return ConvertBackFunc.Invoke(tOut);
}
return null;
}
}
public class FuncConverter(Func