public object ConvertValueIfNecessary(object value, Type targetType) { if (IsAlreadyCompatible(value, targetType)) { return value; } object converted; var success = TrySpecialConversion(value, targetType, out converted); if (success) { return converted; } var typeConverter = WiringContext.ConverterProvider.GetTypeConverter(targetType); if (typeConverter != null) { var context = new XamlTypeConverterContext(WiringContext.TypeContext); if (typeConverter.CanConvertFrom(context, value.GetType())) { var anotherValue = typeConverter.ConvertFrom(context, CultureInfo.InvariantCulture, value); return anotherValue; } } return value; }
public object ConvertValueIfNecessary(object value, XamlType targetType) { if (IsAlreadyCompatible(value, targetType.UnderlyingType)) { return value; } object converted; var success = TrySpecialConversion(value, targetType.UnderlyingType, out converted); if (success) { return converted; } var typeConverter = targetType.TypeConverter; if (typeConverter != null) { var context = new XamlTypeConverterContext(typeRepository, topDownValueContext); if (typeConverter.CanConvertFrom(context, value.GetType())) { var anotherValue = typeConverter.ConvertFrom(context, CultureInfo.InvariantCulture, value); return anotherValue; } } return value; }
public object ConvertValueIfNecessary(object value, XamlType targetType) { if (IsAlreadyCompatible(value, targetType.UnderlyingType)) { return(value); } object converted; var success = TrySpecialConversion(value, targetType.UnderlyingType, out converted); if (success) { return(converted); } var typeConverter = targetType.TypeConverter; if (typeConverter != null) { var context = new XamlTypeConverterContext(typeRepository, topDownValueContext); if (typeConverter.CanConvertFrom(context, value.GetType())) { var anotherValue = typeConverter.ConvertFrom(context, CultureInfo.InvariantCulture, value); return(anotherValue); } } return(value); }
private object ConvertValueIfNecessary(object value, Type targetType) { object converted; var success = TrySpecialConversion(value, targetType, out converted); if (success) { return converted; } var typeConverter = typeConverterProvider.GetTypeConverter(targetType); if (typeConverter != null) { var context = new XamlTypeConverterContext(xamlTypeRepository); var anotherValue = typeConverter.ConvertFrom(context, CultureInfo.InvariantCulture, value); return anotherValue; } throw new ValueConversionException($"Cannot convert {value} to type {targetType}"); }