using System; using System.Globalization; using System.Windows.Data; namespace VBASync.WPF { public class WpfConverter : IValueConverter { private readonly Func _forward; private readonly Func _reverse; public WpfConverter(Func forward, Func reverse = null) { _forward = (v, t, p, c) => forward(v); _reverse = (v, t, p, c) => (reverse ?? (v2 => Binding.DoNothing))(v); } public WpfConverter(Func forwardVp, Func reverseVp = null) { _forward = (v, t, p, c) => forwardVp(v, p); _reverse = (v, t, p, c) => (reverseVp ?? ((v2, p2) => Binding.DoNothing))(v, p); } public WpfConverter(Func forwardVtpc, Func reverseVtpc = null) { _forward = forwardVtpc; _reverse = reverseVtpc ?? ((v, t, p, c) => Binding.DoNothing); } public object Convert(object value, Type targetType, object parameter, CultureInfo culture) => _forward(value, targetType, parameter, culture); public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture) => _reverse(value, targetType, parameter, culture); } }