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

28 lines
1.3 KiB
C#
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
using System.Globalization;
using System.Windows.Data;
namespace Melskin.Converters.Internal;
/// <summary>
/// IntensityToSlotShadowMarginConverter 类用于将阴影强度double类型转换为阴影边距Thickness类型。此转换器特别适用于需要根据阴影强度动态调整UI元素阴影边距的场景。
/// 该类实现了IValueConverter接口提供了从双精度浮点数到厚度值的单向转换逻辑。转换过程中基于输入的强度值计算出一个偏移量并以此构建新的 Thickness 实例来表示阴影边距。
/// 注意:此转换器不支持反向转换操作。
/// </summary>
[ValueConversion(typeof(double), typeof(Thickness))]
internal class IntensityToSlotShadowMarginConverter : IValueConverter
{
public static readonly IntensityToSlotShadowMarginConverter Instance = new();
public object Convert(object? value, Type targetType, object? parameter, CultureInfo culture)
{
var intensity = (double)(value ?? 0);
//此处与中央Margin匹配
var offset = 4 + intensity * 4;
return new Thickness(0, 0, offset, offset);
}
public object ConvertBack(object? value, Type targetType, object? parameter, CultureInfo culture)
{
return Binding.DoNothing;
}
}