Files
2022-11-01 15:26:08 +00:00

45 lines
1.3 KiB
C#

using System;
using System.Globalization;
using System.Windows.Data;
using System.Windows.Markup;
namespace TheXamlGuy.UI.WPF
{
public abstract class ValueConverter<TSource, TTarget> : MarkupExtension, IValueConverter
{
public object? Convert(object value, Type targetType, object parameter, CultureInfo culture)
{
return ConvertTo((TSource)value, targetType, parameter, culture);
}
public object? ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
{
return ConvertBackTo((TTarget)value, targetType, parameter, culture);
}
public TTarget? Convert(TSource value)
{
return ConvertTo(value, null, null, null);
}
public TSource? ConvertBack(TTarget value)
{
return ConvertBackTo(value, null, null, null);
}
protected virtual TTarget? ConvertTo(TSource value, Type? targetType, object? parameter, CultureInfo? culture)
{
return default;
}
protected virtual TSource? ConvertBackTo(TTarget value, Type? targetType, object? parameter, CultureInfo? culture)
{
return default;
}
public override object ProvideValue(IServiceProvider serviceProvider)
{
return this;
}
}
}