Files
Wand-Enhancer-k1tbyte/WandEnhancer/Converters/BaseBooleanConverter.cs
T
2026-03-30 21:39:06 +03:00

51 lines
1.4 KiB
C#

using System;
using System.Collections.Generic;
using System.Globalization;
using System.Windows.Data;
namespace WandEnhancer.Converters
{
public abstract class BaseBooleanConverter<T> : IValueConverter
{
protected BaseBooleanConverter(T trueValue, T falseValue)
{
True = trueValue;
False = falseValue;
}
protected T True { get; set; }
protected T False { get; set; }
public virtual object Convert(object value, Type targetType, object parameter, CultureInfo culture)
{
switch (value)
{
case null:
return False;
case bool booleanValue:
return booleanValue ? True : False;
}
if (!(value is int intValue))
{
return True;
}
switch (parameter)
{
case null:
return intValue == 0 ? False : True;
case int param:
return intValue > param ? True : False;
default:
//Because object not null
return True;
}
}
public virtual object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
{
return value is T t && EqualityComparer<T>.Default.Equals(t, True);
}
}
}