using System.Globalization;
using System.Windows.Data;
namespace Melskin.Converters;
///
/// BooleanConverter 类用于在布尔值与其他类型之间进行转换。通过传递两个泛型参数实例,可以为真和假的情况分别指定不同的输出值。
/// 该类实现了 IValueConverter 接口,可以在 WPF 或其他支持数据绑定的环境中使用。
///
/// 要转换成的目标类型的泛型参数。
public class BooleanConverter(T trueValue, T falseValue) : IValueConverter
{
///
/// 获取或设置当布尔值为真时应返回的值。
/// 该属性用于在转换过程中,当输入值为 true 时指定所对应的输出值。
///
/// 表示此属性可以接受任何类型的值。
/// 当布尔值为真时,转换器将返回此属性指定的值。
public T TrueValue { get; set; } = trueValue;
///
///
///
public T FalseValue { get; set; } = falseValue;
///
public virtual object? Convert(object? value, Type targetType, object? parameter, CultureInfo culture)
=> value is true ? TrueValue : FalseValue;
///
public virtual object ConvertBack(object? value, Type targetType, object? parameter, CultureInfo culture)
=> value is T tValue && EqualityComparer.Default.Equals(tValue, TrueValue);
}