Pārlūkot izejas kodu

Added non-generic FuncConverter for use with nullable reference types.

Kenric Nugteren 4 mēneši atpakaļ
vecāks
revīzija
8aef78208a
1 mainītis faili ar 24 papildinājumiem un 0 dzēšanām
  1. 24 0
      inabox.wpf/Converters/FuncConverter.cs

+ 24 - 0
inabox.wpf/Converters/FuncConverter.cs

@@ -9,6 +9,9 @@ using System.Windows.Data;
 
 namespace InABox.Wpf;
 
+/// <remarks>
+/// <b>Warning:</b> this doesn't work for nullable <typeparamref name="TIn"/>. Use the non-generic <see cref="FuncConverter"/> instead.
+/// </remarks>
 public class FuncConverter<TIn, TOut>(Func<TIn, TOut> convert, Func<TOut, TIn>? convertBack = null) : IValueConverter<TIn, TOut>
 {
     public Func<TIn, TOut> ConvertFunc { get; set; } = convert;
@@ -33,3 +36,24 @@ public class FuncConverter<TIn, TOut>(Func<TIn, TOut> convert, Func<TOut, TIn>?
         return null;
     }
 }
+
+public class FuncConverter(Func<object?, object?> convert, Func<object?, object?>? convertBack = null) : IValueConverter
+{
+    public Func<object?, object?> ConvertFunc { get; set; } = convert;
+
+    public Func<object?, object?>? ConvertBackFunc { get; set; } = convertBack;
+
+    public object? Convert(object? value, Type targetType, object parameter, CultureInfo culture)
+    {
+        return ConvertFunc(value);
+    }
+
+    public object? ConvertBack(object? value, Type targetType, object parameter, CultureInfo culture)
+    {
+        if(ConvertBackFunc is not null)
+        {
+            return ConvertBackFunc.Invoke(value);
+        }
+        return null;
+    }
+}