From 7667d9d510cf7464aad8cde6c7db580782a7f414 Mon Sep 17 00:00:00 2001 From: Ivan Kochurkin Date: Thu, 28 Jan 2016 14:42:09 +0300 Subject: [PATCH] Added Binding to Polygon and Polyline. --- samples/ControlCatalog/Pages/CanvasPage.paml | 9 +++-- samples/TestApplicationShared/MainWindow.cs | 4 ++ .../Context/PerspexWiringContext.cs | 2 + .../Converters/PointsListTypeConverter.cs | 37 +++++++++++++++++++ .../Perspex.Markup.Xaml.csproj | 1 + 5 files changed, 49 insertions(+), 4 deletions(-) create mode 100644 src/Markup/Perspex.Markup.Xaml/Converters/PointsListTypeConverter.cs diff --git a/samples/ControlCatalog/Pages/CanvasPage.paml b/samples/ControlCatalog/Pages/CanvasPage.paml index 4a3f682d17..8aaa8176bd 100644 --- a/samples/ControlCatalog/Pages/CanvasPage.paml +++ b/samples/ControlCatalog/Pages/CanvasPage.paml @@ -2,12 +2,13 @@ Canvas A panel which lays out its children by explicit coordinates - - + - + + + + - \ No newline at end of file diff --git a/samples/TestApplicationShared/MainWindow.cs b/samples/TestApplicationShared/MainWindow.cs index 4fb3099b84..30490f774b 100644 --- a/samples/TestApplicationShared/MainWindow.cs +++ b/samples/TestApplicationShared/MainWindow.cs @@ -725,6 +725,10 @@ namespace TestApplication { Stroke = Brushes.Brown, Points = polylinePoints, + StrokeThickness = 5, + StrokeJoin = PenLineJoin.Round, + StrokeStartLineCap = PenLineCap.Triangle, + StrokeEndLineCap = PenLineCap.Triangle, [Canvas.LeftProperty] = 30, [Canvas.TopProperty] = 350, }, diff --git a/src/Markup/Perspex.Markup.Xaml/Context/PerspexWiringContext.cs b/src/Markup/Perspex.Markup.Xaml/Context/PerspexWiringContext.cs index e42df57d59..45e3e7285d 100644 --- a/src/Markup/Perspex.Markup.Xaml/Context/PerspexWiringContext.cs +++ b/src/Markup/Perspex.Markup.Xaml/Context/PerspexWiringContext.cs @@ -21,6 +21,7 @@ using Perspex.Media.Imaging; using Perspex.Metadata; using Perspex.Platform; using Perspex.Styling; +using System.Collections.Generic; namespace Perspex.Markup.Xaml.Context { @@ -101,6 +102,7 @@ namespace Perspex.Markup.Xaml.Context new TypeConverterRegistration(typeof(PerspexList), new PerspexListTypeConverter()), new TypeConverterRegistration(typeof(IMemberSelector), new MemberSelectorTypeConverter()), new TypeConverterRegistration(typeof(Point), new PointTypeConverter()), + new TypeConverterRegistration(typeof(IList), new PointsListTypeConverter()), new TypeConverterRegistration(typeof(PerspexProperty), new PerspexPropertyTypeConverter()), new TypeConverterRegistration(typeof(RelativePoint), new RelativePointTypeConverter()), new TypeConverterRegistration(typeof(RelativeRect), new RelativeRectTypeConverter()), diff --git a/src/Markup/Perspex.Markup.Xaml/Converters/PointsListTypeConverter.cs b/src/Markup/Perspex.Markup.Xaml/Converters/PointsListTypeConverter.cs new file mode 100644 index 0000000000..cff7443eff --- /dev/null +++ b/src/Markup/Perspex.Markup.Xaml/Converters/PointsListTypeConverter.cs @@ -0,0 +1,37 @@ +using OmniXaml.TypeConversion; +using System; +using System.Collections.Generic; +using System.Globalization; + +namespace Perspex.Markup.Xaml.Converters +{ + public class PointsListTypeConverter : ITypeConverter + { + public bool CanConvertFrom(IXamlTypeConverterContext context, Type sourceType) + { + return sourceType == typeof(string); + } + + public bool CanConvertTo(IXamlTypeConverterContext context, Type destinationType) + { + return false; + } + + public object ConvertFrom(IXamlTypeConverterContext context, CultureInfo culture, object value) + { + string strValue = (string)value; + string[] pointStrs = strValue.Split(new[] { ' ', '\t', '\r', '\n' }, StringSplitOptions.RemoveEmptyEntries); + var result = new List(pointStrs.Length); + foreach (var pointStr in pointStrs) + { + result.Add(Point.Parse(pointStr, culture)); + } + return result; + } + + public object ConvertTo(IXamlTypeConverterContext context, CultureInfo culture, object value, Type destinationType) + { + throw new NotImplementedException(); + } + } +} diff --git a/src/Markup/Perspex.Markup.Xaml/Perspex.Markup.Xaml.csproj b/src/Markup/Perspex.Markup.Xaml/Perspex.Markup.Xaml.csproj index d9cd4c6f63..74cf64f3ec 100644 --- a/src/Markup/Perspex.Markup.Xaml/Perspex.Markup.Xaml.csproj +++ b/src/Markup/Perspex.Markup.Xaml/Perspex.Markup.Xaml.csproj @@ -41,6 +41,7 @@ +