Browse Source

Handle X,Y thicknesses in XAML.

pull/100/head
Steven Kirk 11 years ago
parent
commit
9c240db51c
  1. 41
      src/Markup/Perspex.Markup.Xaml/Converters/ThicknessConverter.cs

41
src/Markup/Perspex.Markup.Xaml/Converters/ThicknessConverter.cs

@ -27,35 +27,26 @@ namespace Perspex.Markup.Xaml.Converters
private static Thickness ConvertFromString(string s)
{
var parts = s.Split(',', ' ')
.Take(4)
.Select(part => part.Trim());
var parts = s.Split(',', ' ');
if (parts.Count() == 1)
switch (parts.Length)
{
var uniformLength = double.Parse(parts.First());
return new Thickness(uniformLength);
case 1:
var uniform = double.Parse(parts[0]);
return new Thickness(uniform);
case 2:
var horizontal = double.Parse(parts[0]);
var vertical = double.Parse(parts[1]);
return new Thickness(horizontal, vertical);
case 4:
var left = double.Parse(parts[0]);
var top = double.Parse(parts[1]);
var right = double.Parse(parts[2]);
var bottom = double.Parse(parts[3]);
return new Thickness(left, top, right, bottom);
}
double left = 0, top = 0, right = 0, bottom = 0;
IList<Action<double>> setValue = new List<Action<double>>
{
val => left = val,
val => top = val,
val => right = val,
val => bottom = val,
};
var i = 0;
foreach (var part in parts)
{
var v = double.Parse(part);
setValue[i](v);
i++;
}
return new Thickness(left, top, right, bottom);
throw new InvalidOperationException("Invalid Thickness.");
}
public object ConvertTo(IXamlTypeConverterContext context, CultureInfo culture, object value, Type destinationType)

Loading…
Cancel
Save