static ValueConverters() { PrimitiveConverterFactory.RegisterConverter(new ColorSolidColorBrushConverter()); PrimitiveConverterFactory.RegisterConverter(new ColorBrushConverter()); PrimitiveConverterFactory.RegisterConverter(new StringBrushConverter()); PrimitiveConverterFactory.RegisterConverter(new StringSolidColorBrushConverter()); PrimitiveConverterFactory.RegisterConverter(new SolidColorBrushColorConverter()); PrimitiveConverterFactory.RegisterConverter(new SolidColorBrushStringConverter()); PrimitiveConverterFactory.RegisterConverter(new ColorStringConverter()); PrimitiveConverterFactory.RegisterConverter(new StringColorConverter()); PrimitiveConverterFactory.RegisterConverter(new StringGeometryConverter()); PrimitiveConverterFactory.RegisterConverter(new StringFontFamilyConverter()); PrimitiveConverterFactory.RegisterConverter(new StringFontStyleConverter()); PrimitiveConverterFactory.RegisterConverter(new StringFontWeightConverter()); PrimitiveConverterFactory.RegisterConverter(new StringFontStretchConverter()); PrimitiveConverterFactory.RegisterConverter(new FontFamilyStringConverter()); PrimitiveConverterFactory.RegisterConverter(new FontStyleStringConverter()); PrimitiveConverterFactory.RegisterConverter(new FontWeightStringConverter()); PrimitiveConverterFactory.RegisterConverter(new GridLengthDoubleConverter()); PrimitiveConverterFactory.RegisterConverter(new DoubleGridLengthConverter()); ColorBrushConverter = CreateXamlIValueConverter <Color, SolidColorBrush>(); ColorStringConverter = CreateXamlIValueConverter <Color, string>(); StringDoubleConverter = CreateXamlIValueConverter <string, double>(); StringIntConverter = CreateXamlIValueConverter <string, int>(); StringShortConverter = CreateXamlIValueConverter <string, short>(); StringDecimalConverter = CreateXamlIValueConverter <string, decimal>(); }
private static DelegateConverter CreateXamlIValueConverter <TInput, TOutput>() { var directConverter = PrimitiveConverterFactory.GetConverter <TInput, TOutput>(); var reverseConverter = PrimitiveConverterFactory.GetConverter <TOutput, TInput>(); if (directConverter == null || reverseConverter == null) { throw new Exception("Could not find appropriate converter"); } return(new DelegateConverter((value, type) => SafeConverter(value, type, directConverter), (value, type) => SafeConverter(value, type, reverseConverter))); }
public override object ConvertFrom(ITypeDescriptorContext context, CultureInfo culture, object value) { var targetType = typeof(TTo); if (value == null) { return(RuntimeUtils.CreateDefaultValue(targetType)); } var sourceType = value.GetType(); return(PrimitiveConverterFactory.GetConverter(sourceType, targetType).Convert(value)); }
public override bool CanConvertFrom(ITypeDescriptorContext context, Type sourceType) { var primitiveConverter = PrimitiveConverterFactory.GetConverter(sourceType, typeof(TTo)); return(primitiveConverter != null); }
public NegatedTryConvert TryGetNegatedTryConvert(Type sourceType, Type targetType, object defaultValue) { return(PrimitiveConverterFactory.TryGetNegatedTryConvert(sourceType, targetType, defaultValue)); }