55 lines
1.7 KiB
C#
55 lines
1.7 KiB
C#
using System;
|
|
using System.Globalization;
|
|
using System.Windows.Data;
|
|
|
|
namespace CtrEditor.Converters
|
|
{
|
|
/// <summary>
|
|
/// Converter that subtracts a parameter value from the input value
|
|
/// Useful for calculations like width - margin, etc.
|
|
/// </summary>
|
|
public class SubtractConverter : IValueConverter
|
|
{
|
|
public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
|
|
{
|
|
try
|
|
{
|
|
if (value != null && parameter != null)
|
|
{
|
|
var inputValue = System.Convert.ToDouble(value);
|
|
var subtractValue = System.Convert.ToDouble(parameter);
|
|
|
|
var result = inputValue - subtractValue;
|
|
return Math.Max(0, result); // Ensure result is not negative
|
|
}
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
System.Diagnostics.Debug.WriteLine($"SubtractConverter.Convert: Exception - {ex.Message}");
|
|
}
|
|
|
|
return 0.0;
|
|
}
|
|
|
|
public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
|
|
{
|
|
try
|
|
{
|
|
if (value != null && parameter != null)
|
|
{
|
|
var inputValue = System.Convert.ToDouble(value);
|
|
var addValue = System.Convert.ToDouble(parameter);
|
|
|
|
return inputValue + addValue;
|
|
}
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
System.Diagnostics.Debug.WriteLine($"SubtractConverter.ConvertBack: Exception - {ex.Message}");
|
|
}
|
|
|
|
return 0.0;
|
|
}
|
|
}
|
|
}
|