From f7150c65c77ad31ea77bbdbd9a55770ac7830abf Mon Sep 17 00:00:00 2001 From: Steven Kirk Date: Thu, 18 Feb 2016 20:38:28 +0100 Subject: [PATCH] Allow SolidColorBrushes in style resources. --- .../Context/PerspexTypeFeatureProvider.cs | 1 + .../SolidColorBrushTypeConverter.cs | 33 +++++++++++++++++++ src/Markup/Perspex.Markup.Xaml/OmniXAML | 2 +- 3 files changed, 35 insertions(+), 1 deletion(-) create mode 100644 src/Markup/Perspex.Markup.Xaml/Converters/SolidColorBrushTypeConverter.cs diff --git a/src/Markup/Perspex.Markup.Xaml/Context/PerspexTypeFeatureProvider.cs b/src/Markup/Perspex.Markup.Xaml/Context/PerspexTypeFeatureProvider.cs index 25b3189da5..a875a751c4 100644 --- a/src/Markup/Perspex.Markup.Xaml/Context/PerspexTypeFeatureProvider.cs +++ b/src/Markup/Perspex.Markup.Xaml/Context/PerspexTypeFeatureProvider.cs @@ -166,6 +166,7 @@ namespace Perspex.Markup.Xaml.Context RegisterTypeConverter(typeof(RelativeRect), new RelativeRectTypeConverter()); RegisterTypeConverter(typeof(RowDefinitions), new RowDefinitionsTypeConverter()); RegisterTypeConverter(typeof(Selector), new SelectorTypeConverter()); + RegisterTypeConverter(typeof(SolidColorBrush), new SolidColorBrushTypeConverter()); RegisterTypeConverter(typeof(Thickness), new ThicknessTypeConverter()); RegisterTypeConverter(typeof(TimeSpan), new TimeSpanTypeConverter()); RegisterTypeConverter(typeof(Uri), new UriTypeConverter()); diff --git a/src/Markup/Perspex.Markup.Xaml/Converters/SolidColorBrushTypeConverter.cs b/src/Markup/Perspex.Markup.Xaml/Converters/SolidColorBrushTypeConverter.cs new file mode 100644 index 0000000000..005b8a91c4 --- /dev/null +++ b/src/Markup/Perspex.Markup.Xaml/Converters/SolidColorBrushTypeConverter.cs @@ -0,0 +1,33 @@ +// Copyright (c) The Perspex Project. All rights reserved. +// Licensed under the MIT license. See licence.md file in the project root for full license information. + +using System; +using System.Globalization; +using OmniXaml.TypeConversion; +using Perspex.Media; + +namespace Perspex.Markup.Xaml.Converters +{ + public class SolidColorBrushTypeConverter : ITypeConverter + { + public bool CanConvertFrom(ITypeConverterContext context, Type sourceType) + { + return sourceType == typeof(string); + } + + public bool CanConvertTo(ITypeConverterContext context, Type destinationType) + { + return false; + } + + public object ConvertFrom(ITypeConverterContext context, CultureInfo culture, object value) + { + return Brush.Parse((string)value); + } + + public object ConvertTo(ITypeConverterContext context, CultureInfo culture, object value, Type destinationType) + { + throw new NotImplementedException(); + } + } +} \ No newline at end of file diff --git a/src/Markup/Perspex.Markup.Xaml/OmniXAML b/src/Markup/Perspex.Markup.Xaml/OmniXAML index 27005c8b4d..e1a5fb60b0 160000 --- a/src/Markup/Perspex.Markup.Xaml/OmniXAML +++ b/src/Markup/Perspex.Markup.Xaml/OmniXAML @@ -1 +1 @@ -Subproject commit 27005c8b4d41f2a6d3b85da7eb6ed994b57e0138 +Subproject commit e1a5fb60b09862183ba5c48c36a52bea7a66bd42