4 using System.Globalization;
6 using System.Windows.Data;
8 using SiliconStudio.Presentation.MarkupExtensions;
10 namespace SiliconStudio.Presentation.ValueConverters
18 [ValueConversion(typeof(
double), typeof(Thickness))]
22 public override object Convert(
object value, Type targetType,
object parameter, CultureInfo culture)
27 scalar = System.Convert.ToDouble(value);
31 throw new ArgumentException(
"The value of this converter must be convertible to a double.", exception);
34 if (!(parameter is Thickness))
36 throw new ArgumentException(
"The parameter of this converter must be an instance of the Thickness structure. Use {sskk:Thickness (arguments)} to construct one.");
39 var thickness = (Thickness)parameter;
40 var result =
new Thickness(thickness.Left * scalar, thickness.Top * scalar, thickness.Right * scalar, thickness.Bottom * scalar);
45 public override object ConvertBack(
object value, Type targetType,
object parameter, CultureInfo culture)
47 if (!(value is Thickness))
49 throw new ArgumentException(
"The value of the ConvertBack method of this converter must be a an instance of the Thickness structure.");
51 if (!(parameter is Thickness))
53 throw new ArgumentException(
"The parameter of the ConvertBack method of this converter must be a an instance of the Thickness structure.");
55 var thicknessValue = (Thickness)value;
56 var thicknessParameter = (Thickness)parameter;
59 if (Math.Abs(thicknessParameter.Left) > double.Epsilon)
61 scalar = thicknessValue.Left / thicknessParameter.Left;
63 else if (Math.Abs(thicknessParameter.Right) > double.Epsilon)
65 scalar = thicknessValue.Right / thicknessParameter.Right;
67 else if (Math.Abs(thicknessParameter.Top) > double.Epsilon)
69 scalar = thicknessValue.Top / thicknessParameter.Top;
71 else if (Math.Abs(thicknessParameter.Bottom) > double.Epsilon)
73 scalar = thicknessValue.Bottom / thicknessParameter.Bottom;
76 return System.Convert.ChangeType(scalar, targetType);
override object Convert(object value, Type targetType, object parameter, CultureInfo culture)
This converter will convert a double value to a Thickness structure that can be used for Margin...
override object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)