diff --git a/src/Markup/Perspex.Markup.Xaml/Converters/BrushConverter.cs b/src/Markup/Perspex.Markup.Xaml/Converters/BrushConverter.cs index cd55031cf7..63efc9f5c1 100644 --- a/src/Markup/Perspex.Markup.Xaml/Converters/BrushConverter.cs +++ b/src/Markup/Perspex.Markup.Xaml/Converters/BrushConverter.cs @@ -8,6 +8,7 @@ namespace Perspex.Markup.Xaml.Converters { using System; using System.Globalization; + using System.Reflection; using System.Text; using Media; using Media.Imaging; @@ -32,10 +33,24 @@ namespace Perspex.Markup.Xaml.Converters var color = DecodeColor(colorString); - return new SolidColorBrush(color); + if (color != null) + { + return new SolidColorBrush(color.Value); + } + else + { + var member = typeof(Brushes).GetTypeInfo().GetDeclaredProperty(colorString); + + if (member != null) + { + return (Brush)member.GetValue(null); + } + } + + throw new InvalidOperationException("Invalid color string."); } - private static Color DecodeColor(string colorString) + private static Color? DecodeColor(string colorString) { if (colorString[0] == '#') { @@ -49,6 +64,7 @@ namespace Perspex.Markup.Xaml.Converters var b = Convert.ToByte(restOfValue.Substring(8, 2), 16); return Color.FromArgb(a, r, g, b); } + if (restOfValue.Length == 6) { var r = Convert.ToByte(restOfValue.Substring(0, 2), 16); @@ -59,26 +75,8 @@ namespace Perspex.Markup.Xaml.Converters throw new InvalidOperationException("The color code format cannot be parsed"); } - else - { - return DecodeFromNamedColor(colorString); - } - - throw new InvalidOperationException($"The color cannot be decoded from the string \"{colorString}\""); - } - private static Color DecodeFromNamedColor(string colorString) - { - if (colorString == "Crimson") - { - return DecodeColor("#DC143C"); - } - if (colorString == "Coral") - { - return DecodeColor("#FF7F50"); - } - - throw new NotImplementedException(); + return null; } public object ConvertTo(IXamlTypeConverterContext context, CultureInfo culture, object value, Type destinationType)