Files
ShrlAlgoToolkit/Melskin/Converters/BooleanConverter.cs

33 lines
1.5 KiB
C#
Raw Normal View History

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