using System; using System.ComponentModel; using Windows.Foundation; using Windows.UI.Xaml; using Windows.UI.Xaml.Controls; using Windows.UI.Xaml.Documents; #if WINDOWS_UWP namespace Xamarin.Forms.Platform.UWP #else namespace Xamarin.Forms.Platform.WinRT #endif { public static class FormattedStringExtensions { public static Run ToRun(this Span span) { var run = new Run { Text = span.Text }; if (span.ForegroundColor != Color.Default) run.Foreground = span.ForegroundColor.ToBrush(); if (!span.IsDefault()) #pragma warning disable 618 run.ApplyFont(span.Font); #pragma warning restore 618 return run; } } public class LabelRenderer : ViewRenderer { bool _fontApplied; protected override Windows.Foundation.Size ArrangeOverride(Windows.Foundation.Size finalSize) { if (Element == null) return finalSize; double childHeight = Math.Max(0, Math.Min(Element.Height, Control.DesiredSize.Height)); var rect = new Rect(); switch (Element.VerticalTextAlignment) { case TextAlignment.Start: break; default: case TextAlignment.Center: rect.Y = (int)((finalSize.Height - childHeight) / 2); break; case TextAlignment.End: rect.Y = finalSize.Height - childHeight; break; } rect.Height = childHeight; rect.Width = finalSize.Width; Control.Arrange(rect); return finalSize; } protected override void OnElementChanged(ElementChangedEventArgs