using System.Globalization;
using System.Windows.Data;
namespace Melskin.Converters;
///
/// 该转换器用于将输入值除以2。主要用于在XAML中绑定时处理数值,特别是当需要将某个元素的高度或其他尺寸属性减半时。
///
///
/// 此转换器实现了IValueConverter接口,提供了一个静态实例以便于在XAML中直接引用。
/// 它接受一个double类型的值作为输入,并返回该值的一半;如果输入不是double类型,则返回0。
/// 转换回方法未实现(抛出NotImplementedException),因为通常不需要逆向操作。
///
public class DivideByTwoConverter : IValueConverter
{
///
/// 获取单例实例的 DivideByTwoConverter,用于将输入值除以2。
///
///
/// 该属性提供了一个静态的 DivideByTwoConverter 实例,可以在需要进行数值除以2转换的地方直接引用。
/// 主要应用于WPF绑定中的值转换场景,例如在XAML中设置元素的CornerRadius时,可以使用此转换器来动态调整角的半径。
/// 注意:此转换器仅支持从double类型到double类型的转换,并且不支持逆向转换。
///
public static DivideByTwoConverter Instance { get; } = new();
///
public object Convert(object? value, Type targetType, object? parameter, CultureInfo culture) => value is double d
? d / 2.0
: 0;
///
public object ConvertBack(object? value, Type targetType, object? parameter, CultureInfo culture) => Binding.DoNothing;
}