4 using System.Globalization;
6 using System.Windows.Data;
8 using SiliconStudio.Presentation.MarkupExtensions;
10 namespace SiliconStudio.Presentation.ValueConverters
18 [ValueConversion(typeof(
double), typeof(Size))]
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 Size))
36 throw new ArgumentException(
"The parameter of this converter must be an instance of the Size structure. Use {sskk:Size (arguments)} to construct one.");
39 var
size = (Size)parameter;
40 var result =
new Size(size.Width * scalar, size.Height * scalar);
45 public override object ConvertBack(
object value, Type targetType,
object parameter, CultureInfo culture)
49 throw new ArgumentException(
"The value of the ConvertBack method of this converter must be a an instance of the Size structure.");
51 if (!(parameter is Size))
53 throw new ArgumentException(
"The parameter of the ConvertBack method of this converter must be a an instance of the Size structure.");
55 var sizeValue = (Size)value;
56 var sizeParameter = (Size)parameter;
59 if (Math.Abs(sizeParameter.Width) > double.Epsilon)
61 scalar = sizeValue.Width / sizeParameter.Width;
63 else if (Math.Abs(sizeParameter.Height) > double.Epsilon)
65 scalar = sizeValue.Height / sizeParameter.Height;
68 return System.Convert.ChangeType(scalar, targetType);
override object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
This converter will convert a double value to a Size structure. A Size must be passed as a parameter ...
override object Convert(object value, Type targetType, object parameter, CultureInfo culture)
_In_ size_t _In_ size_t size