From 2fe35aacf9fb79a5d2317e587b8cfbfc3fce249d Mon Sep 17 00:00:00 2001 From: donandren Date: Mon, 9 May 2016 15:38:44 +0300 Subject: [PATCH] Support for Size in xaml --- .../Context/PerspexTypeFeatureProvider.cs | 1 + .../Converters/SizeTypeConverter.cs | 32 +++++++++++++++++++ .../Perspex.Markup.Xaml.csproj | 1 + src/Perspex.SceneGraph/Size.cs | 3 +- 4 files changed, 36 insertions(+), 1 deletion(-) create mode 100644 src/Markup/Perspex.Markup.Xaml/Converters/SizeTypeConverter.cs diff --git a/src/Markup/Perspex.Markup.Xaml/Context/PerspexTypeFeatureProvider.cs b/src/Markup/Perspex.Markup.Xaml/Context/PerspexTypeFeatureProvider.cs index 4f3d29929c..66e1d810f5 100644 --- a/src/Markup/Perspex.Markup.Xaml/Context/PerspexTypeFeatureProvider.cs +++ b/src/Markup/Perspex.Markup.Xaml/Context/PerspexTypeFeatureProvider.cs @@ -165,6 +165,7 @@ namespace Perspex.Markup.Xaml.Context RegisterTypeConverter(typeof(RelativePoint), new RelativePointTypeConverter()); RegisterTypeConverter(typeof(RelativeRect), new RelativeRectTypeConverter()); RegisterTypeConverter(typeof(RowDefinitions), new RowDefinitionsTypeConverter()); + RegisterTypeConverter(typeof(Size), new SizeTypeConverter()); RegisterTypeConverter(typeof(Selector), new SelectorTypeConverter()); RegisterTypeConverter(typeof(SolidColorBrush), new BrushTypeConverter()); RegisterTypeConverter(typeof(Thickness), new ThicknessTypeConverter()); diff --git a/src/Markup/Perspex.Markup.Xaml/Converters/SizeTypeConverter.cs b/src/Markup/Perspex.Markup.Xaml/Converters/SizeTypeConverter.cs new file mode 100644 index 0000000000..ec6763c555 --- /dev/null +++ b/src/Markup/Perspex.Markup.Xaml/Converters/SizeTypeConverter.cs @@ -0,0 +1,32 @@ +// 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; + +namespace Perspex.Markup.Xaml.Converters +{ + public class SizeTypeConverter : ITypeConverter + { + public bool CanConvertFrom(IValueContext context, Type sourceType) + { + return sourceType == typeof(string); + } + + public bool CanConvertTo(IValueContext context, Type destinationType) + { + return false; + } + + public object ConvertFrom(IValueContext context, CultureInfo culture, object value) + { + return Size.Parse((string)value, culture); + } + + public object ConvertTo(IValueContext context, CultureInfo culture, object value, Type destinationType) + { + throw new NotImplementedException(); + } + } +} \ No newline at end of file diff --git a/src/Markup/Perspex.Markup.Xaml/Perspex.Markup.Xaml.csproj b/src/Markup/Perspex.Markup.Xaml/Perspex.Markup.Xaml.csproj index 0c003e4f75..0d694d2841 100644 --- a/src/Markup/Perspex.Markup.Xaml/Perspex.Markup.Xaml.csproj +++ b/src/Markup/Perspex.Markup.Xaml/Perspex.Markup.Xaml.csproj @@ -66,6 +66,7 @@ + diff --git a/src/Perspex.SceneGraph/Size.cs b/src/Perspex.SceneGraph/Size.cs index 83b49fc0da..648aaf6f6d 100644 --- a/src/Perspex.SceneGraph/Size.cs +++ b/src/Perspex.SceneGraph/Size.cs @@ -3,6 +3,7 @@ using System; using System.Globalization; +using System.Linq; namespace Perspex { @@ -249,4 +250,4 @@ namespace Perspex return string.Format(CultureInfo.InvariantCulture, "{0}, {1}", _width, _height); } } -} +} \ No newline at end of file