diff options
Diffstat (limited to 'Xamarin.Forms.Core/LayoutOptionsConverter.cs')
-rw-r--r-- | Xamarin.Forms.Core/LayoutOptionsConverter.cs | 24 |
1 files changed, 17 insertions, 7 deletions
diff --git a/Xamarin.Forms.Core/LayoutOptionsConverter.cs b/Xamarin.Forms.Core/LayoutOptionsConverter.cs index 746e56ce..6dae0f02 100644 --- a/Xamarin.Forms.Core/LayoutOptionsConverter.cs +++ b/Xamarin.Forms.Core/LayoutOptionsConverter.cs @@ -4,22 +4,32 @@ using System.Reflection; namespace Xamarin.Forms { + [Xaml.ProvideCompiled("Xamarin.Forms.Core.XamlC.LayoutOptionsConverter")] public sealed class LayoutOptionsConverter : TypeConverter { public override object ConvertFromInvariantString(string value) { - if (value != null) - { - string[] parts = value.Split('.'); - if (parts.Length > 2 || (parts.Length == 2 && parts[0] != "LayoutOptions")) - throw new InvalidOperationException(string.Format("Cannot convert \"{0}\" into {1}", value, typeof(LayoutOptions))); - value = parts[parts.Length - 1]; + if (value != null) { + var parts = value.Split('.'); + if (parts.Length > 2 || (parts.Length == 2 && parts [0] != "LayoutOptions")) + throw new InvalidOperationException($"Cannot convert \"{value}\" into {typeof(LayoutOptions)}"); + value = parts [parts.Length - 1]; + switch (value) { + case "Start": return LayoutOptions.Start; + case "Center": return LayoutOptions.Center; + case "End": return LayoutOptions.End; + case "Fill": return LayoutOptions.Fill; + case "StartAndExpand": return LayoutOptions.StartAndExpand; + case "CenterAndExpand": return LayoutOptions.CenterAndExpand; + case "EndAndExpand": return LayoutOptions.EndAndExpand; + case "FillAndExpand": return LayoutOptions.FillAndExpand; + } FieldInfo field = typeof(LayoutOptions).GetFields().FirstOrDefault(fi => fi.IsStatic && fi.Name == value); if (field != null) return (LayoutOptions)field.GetValue(null); } - throw new InvalidOperationException(string.Format("Cannot convert \"{0}\" into {1}", value, typeof(LayoutOptions))); + throw new InvalidOperationException($"Cannot convert \"{value}\" into {typeof(LayoutOptions)}"); } } }
\ No newline at end of file |