FuncConverter.cs 972 B

1234567891011121314151617181920212223242526272829303132333435
  1. using InABox.WPF;
  2. using System;
  3. using System.Collections.Generic;
  4. using System.Globalization;
  5. using System.Linq;
  6. using System.Text;
  7. using System.Threading.Tasks;
  8. using System.Windows.Data;
  9. namespace InABox.Wpf;
  10. public class FuncConverter<TIn, TOut>(Func<TIn, TOut> convert, Func<TOut, TIn>? convertBack = null) : IValueConverter<TIn, TOut>
  11. {
  12. public Func<TIn, TOut> ConvertFunc { get; set; } = convert;
  13. public Func<TOut, TIn>? ConvertBackFunc { get; set; } = convertBack;
  14. public object? Convert(object? value, Type targetType, object parameter, CultureInfo culture)
  15. {
  16. if(value is TIn tIn)
  17. {
  18. return ConvertFunc(tIn);
  19. }
  20. return null;
  21. }
  22. public object? ConvertBack(object? value, Type targetType, object parameter, CultureInfo culture)
  23. {
  24. if(value is TOut tOut && ConvertBackFunc is not null)
  25. {
  26. return ConvertBackFunc.Invoke(tOut);
  27. }
  28. return null;
  29. }
  30. }