2024-09-22 11:05:41 +08:00
|
|
|
|
using System;
|
|
|
|
|
|
using System.Windows.Controls;
|
|
|
|
|
|
using System.Windows.Data;
|
|
|
|
|
|
|
2025-02-10 20:53:40 +08:00
|
|
|
|
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)
|
|
|
|
|
|
{
|
2025-02-10 20:53:40 +08:00
|
|
|
|
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;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
2025-02-10 20:53:40 +08:00
|
|
|
|
public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture) => throw new NotImplementedException(
|
|
|
|
|
|
);
|
2024-09-22 11:05:41 +08:00
|
|
|
|
}
|