Files
ShrlAlgoToolkit/WPFluent/Converters/SliderValueLabelPositionConverter.cs

33 lines
1.0 KiB
C#
Raw Normal View History

2024-09-22 11:05:41 +08:00
using System;
using System.Windows.Controls;
using System.Windows.Data;
namespace WPFluent.Converters;
2024-09-22 11:05:41 +08:00
/// <summary>
/// 滑动块标签位置
/// </summary>
[ValueConversion(typeof(double), typeof(double), ParameterType = typeof(Orientation))]
internal class SliderValueLabelPositionConverter : IValueConverter
{
public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
{
if(parameter is Orientation orientation && value is double width)
2024-09-22 11:05:41 +08:00
{
const double halfGripWidth = 9.0;
const double margin = 4.0;
return orientation switch
{
Orientation.Horizontal => (-width * 0.5) + halfGripWidth,
Orientation.Vertical => -width - margin,
_ => throw new ArgumentOutOfRangeException()
};
}
return 0.0;
}
public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture) => throw new NotImplementedException(
);
2024-09-22 11:05:41 +08:00
}