Files
ShrlAlgoToolkit/Melskin/Converters/Internal/InverseOpacityConverter.cs
2026-02-17 22:17:13 +08:00

28 lines
1.5 KiB
C#

using System.Globalization;
using System.Windows.Data;
namespace Melskin.Converters.Internal;
// 返回 1.0 - 输入值,用于反向不透明度
/// <summary>
/// InverseOpacityConverter 类用于实现不透明度的反转转换。给定一个介于 0.0 到 1.0 之间的双精度浮点数值,该转换器将返回 1.0 减去输入值的结果,从而达到反向不透明度的效果。
/// 此转换器特别适用于需要动态调整 UI 元素不透明度的应用场景中,比如在某些控件的状态切换时,改变背景或前景内容的可见性。
/// </summary>
internal class InverseOpacityConverter : IValueConverter
{
/// <summary>
/// 获取 InverseOpacityConverter 的唯一实例,用于在 XAML 或代码中直接引用以执行不透明度反转转换。
/// 该属性提供了一个静态的、可重用的 InverseOpacityConverter 实例,避免了每次使用时都创建新的对象,
/// 从而优化了性能。此实例特别适用于需要频繁调整 UI 元素不透明度的应用场景,如动态改变控件背景或前景内容的可见性。
/// </summary>
public static InverseOpacityConverter Instance { get; } = new();
/// <inheritdoc />
public object Convert(object? value, Type targetType, object? parameter, CultureInfo culture) => value is double d
? 1.0 - d
: 1.0;
/// <inheritdoc />
public object ConvertBack(object? value, Type targetType, object? parameter, CultureInfo culture) => Binding.DoNothing;
}