public void CanConvertFrom() { SizeConverter r = new SizeConverter(); Assert.IsTrue(r.CanConvertFrom(typeof(string))); Assert.IsFalse(r.CanConvertFrom(typeof(Size))); }
public void CanConvertFrom() { _converter.CanConvertFrom(null, typeof(string)).Should().BeTrue(); _converter.CanConvertFrom(null, typeof(int)).Should().BeFalse(); _converter.CanConvertFrom(null, typeof(void)).Should().BeFalse(); _converter.CanConvertFrom(null, typeof(object)).Should().BeFalse(); _converter.CanConvertFrom(null, typeof(Size)).Should().BeFalse(); _converter.CanConvertFrom(null, typeof(SizeConverter)).Should().BeFalse(); }
/// <inheritdoc /> public object Convert(object[] values, Type targetType, object parameter, CultureInfo culture) { var desiredSize = Size.Empty; // TargetVisual can be at index 1 or index 2, depending on the number of values passed var targetVisual = values.Length == 2 ? values[1] as Visual : null; if (targetVisual == null) { targetVisual = values.Length == 3 ? values[2] as Visual : null; } if (values.Length >= 2 && values[1] is Size desiredSizeFromIndex1) { desiredSize = desiredSizeFromIndex1; } else if (values.Length >= 2 && (values[1] is Visual) == false) { var possibleDesiredSizeValue = values[1]; object convertedValue; if (sizeConverter.CanConvertFrom(possibleDesiredSizeValue.GetType()) && (convertedValue = sizeConverter.ConvertFrom(possibleDesiredSizeValue)) != null) { desiredSize = (Size)convertedValue; } else { desiredSize = Size.Empty; } } //if (desiredSize.IsEmpty // && targetVisual != null // && targetVisual is FrameworkElement targetFrameworkElement // && DoubleHelper.IsFinite(targetFrameworkElement.Width) // && DoubleHelper.IsFinite(targetFrameworkElement.Height)) //{ // desiredSize = new Size(targetFrameworkElement.Width, targetFrameworkElement.Height); //} return(this.Convert(values[0], targetVisual, desiredSize, targetType)); }
/// <inheritdoc /> public object Convert(object[] values, Type targetType, object parameter, CultureInfo culture) { var desiredSize = Size.Empty; var valuesLength = values.Length; // TargetVisual can be at index 1 or index 2, depending on the number of values passed var targetVisual = valuesLength == 2 ? values[1] as Visual : null; if (targetVisual is null) { targetVisual = valuesLength == 3 ? values[2] as Visual : null; } if (valuesLength >= 2 && values[1] is Size desiredSizeFromIndex1) { desiredSize = desiredSizeFromIndex1; } else if (valuesLength >= 2 && (values[1] is Visual) == false) { var possibleDesiredSizeValue = values[1]; object?convertedValue; if (possibleDesiredSizeValue is not null && sizeConverter.CanConvertFrom(possibleDesiredSizeValue.GetType()) && (convertedValue = sizeConverter.ConvertFrom(possibleDesiredSizeValue)) is not null) { desiredSize = (Size)convertedValue; } else { desiredSize = Size.Empty; } }