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.Internal;
|
2025-08-12 23:08:54 +08:00
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
|
/// IntensityToSlotShadowMarginConverter 类用于将阴影强度(double类型)转换为阴影边距(Thickness类型)。此转换器特别适用于需要根据阴影强度动态调整UI元素阴影边距的场景。
|
|
|
|
|
|
/// 该类实现了IValueConverter接口,提供了从双精度浮点数到厚度值的单向转换逻辑。转换过程中,基于输入的强度值计算出一个偏移量,并以此构建新的 Thickness 实例来表示阴影边距。
|
|
|
|
|
|
/// 注意:此转换器不支持反向转换操作。
|
|
|
|
|
|
/// </summary>
|
|
|
|
|
|
[ValueConversion(typeof(double), typeof(Thickness))]
|
|
|
|
|
|
internal class IntensityToSlotShadowMarginConverter : IValueConverter
|
2025-07-31 20:12:24 +08:00
|
|
|
|
{
|
2025-08-12 23:08:54 +08:00
|
|
|
|
public static readonly IntensityToSlotShadowMarginConverter Instance = new();
|
2025-07-31 20:12:24 +08:00
|
|
|
|
|
2025-08-12 23:08:54 +08:00
|
|
|
|
public object Convert(object? value, Type targetType, object? parameter, CultureInfo culture)
|
|
|
|
|
|
{
|
|
|
|
|
|
var intensity = (double)(value ?? 0);
|
|
|
|
|
|
//此处与中央Margin匹配
|
|
|
|
|
|
var offset = 4 + intensity * 4;
|
2025-08-20 12:10:13 +08:00
|
|
|
|
return new Thickness(0, 0, offset, offset);
|
2025-08-12 23:08:54 +08:00
|
|
|
|
}
|
2025-07-31 20:12:24 +08:00
|
|
|
|
|
2025-08-12 23:08:54 +08:00
|
|
|
|
public object ConvertBack(object? value, Type targetType, object? parameter, CultureInfo culture)
|
|
|
|
|
|
{
|
2025-08-20 12:10:13 +08:00
|
|
|
|
return Binding.DoNothing;
|
2025-07-31 20:12:24 +08:00
|
|
|
|
}
|
2025-08-12 23:08:54 +08:00
|
|
|
|
}
|