using System.Globalization; using System.Windows; using System.Windows.Data; namespace MeloongCore.Wpf; /// /// 对数据绑定进行加法运算,使用 决定加数。 /// public class AdditionConverter : IValueConverter { public object? Convert(object? value, Type targetType, object? parameter, CultureInfo culture) { if (value is null) return 0; if (!double.TryParse(value.ToString(), out double before)) return 0; double scale = 1; if (parameter is not null) double.TryParse(parameter.ToString(), out scale); return before + scale; } public object? ConvertBack(object? value, Type targetType, object? parameter, CultureInfo culture) { if (value is null) return Binding.DoNothing; if (!double.TryParse(value.ToString(), out double before)) return Binding.DoNothing; double scale = 1; if (parameter is not null) double.TryParse(parameter.ToString(), out scale); return before - scale; } } /// /// 对数据绑定进行乘法运算,使用 决定乘数。 /// public class MultiplicationConverter : IValueConverter { public object? Convert(object? value, Type targetType, object? parameter, CultureInfo culture) { if (value is null) return 0; if (!double.TryParse(value.ToString(), out double before)) return 0; double scale = 1; if (parameter is not null) double.TryParse(parameter.ToString(), out scale); return before * scale; } public object? ConvertBack(object? value, Type targetType, object? parameter, CultureInfo culture) { if (value is null) return Binding.DoNothing; if (!double.TryParse(value.ToString(), out double before)) return Binding.DoNothing; double scale = 1; if (parameter is not null) double.TryParse(parameter.ToString(), out scale); if (scale == 0) return Binding.DoNothing; return before / scale; } } /// /// 将取反的 绑定到 。 /// public class InverseBooleanToVisibilityConverter : IValueConverter { public object? Convert(object? value, Type targetType, object? parameter, CultureInfo culture) { if (value is null) return Visibility.Visible; return bool.TryParse(value.ToString(), out bool boolValue) ? (boolValue ? Visibility.Collapsed : Visibility.Visible) : Visibility.Visible; } public object? ConvertBack(object? value, Type targetType, object? parameter, CultureInfo culture) { if (value is null) return false; return value is Visibility vis && vis != Visibility.Visible; } } /// /// 将 取反。 /// public class InverseBooleanConverter : IValueConverter { public object? Convert(object? value, Type targetType, object? parameter, CultureInfo culture) { if (value is null) return false; return bool.TryParse(value.ToString(), out bool boolValue) ? !boolValue : false; } public object? ConvertBack(object? value, Type targetType, object? parameter, CultureInfo culture) { if (value is null) return false; return bool.TryParse(value.ToString(), out bool boolValue) ? !boolValue : false; } }