public override object ConvertFromInvariantString(string value) { if (value != null) { value = value.Trim(); if (value.StartsWith(LinearGradient) || value.StartsWith(RadialGradient)) { var gradientBrushParser = new GradientBrushParser(_colorTypeConverter); var brush = gradientBrushParser.Parse(value); if (brush != null) { return(brush); } } if (value.StartsWith(Rgb) || value.StartsWith(Rgba) || value.StartsWith(Hsl) || value.StartsWith(Hsla)) { var color = (Color)_colorTypeConverter.ConvertFromInvariantString(value); return(new SolidColorBrush(color)); } } string[] parts = value.Split('.'); if (parts.Length == 1 || (parts.Length == 2 && parts[0] == "Color")) { var color = (Color)_colorTypeConverter.ConvertFromInvariantString(value); return(new SolidColorBrush(color)); } return(new SolidColorBrush(Color.Default)); }
/// <include file="../../docs/Microsoft.Maui.Controls/BrushTypeConverter.xml" path="//Member[@MemberName='ConvertFrom']/Docs" /> public override object ConvertFrom(ITypeDescriptorContext context, CultureInfo culture, object value) { var strValue = value?.ToString(); if (strValue != null) { strValue = strValue.Trim(); if (strValue.StartsWith(LinearGradient) || strValue.StartsWith(RadialGradient)) { var gradientBrushParser = new GradientBrushParser(_colorTypeConverter); var brush = gradientBrushParser.Parse(strValue); if (brush != null) return brush; } if (strValue.StartsWith(Rgb, StringComparison.InvariantCulture) || strValue.StartsWith(Rgba, StringComparison.InvariantCulture) || strValue.StartsWith(Hsl, StringComparison.InvariantCulture) || strValue.StartsWith(Hsla)) { var color = (Color)_colorTypeConverter.ConvertFromInvariantString(strValue); return new SolidColorBrush(color); } } string[] parts = strValue.Split('.'); if (parts.Length == 1 || (parts.Length == 2 && parts[0] == "Color")) { var color = (Color)_colorTypeConverter.ConvertFromInvariantString(strValue); return new SolidColorBrush(color); } return new SolidColorBrush(null); }