2025-07-31 20:12:24 +08:00
|
|
|
|
using System.Globalization;
|
|
|
|
|
|
using System.Windows.Data;
|
|
|
|
|
|
|
2025-08-20 12:10:35 +08:00
|
|
|
|
namespace NeoUI.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>
|
|
|
|
|
|
/// <typeparam name="T">表示此属性可以接受任何类型的值。</typeparam>
|
|
|
|
|
|
/// <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);
|
|
|
|
|
|
}
|