using System; using System.Collections.Generic; using System.Linq.Expressions; using Xamarin.Forms.Internals; namespace Xamarin.Forms { public class BoundsConstraint { Func _measureFunc; BoundsConstraint() { } internal IEnumerable RelativeTo { get; set; } public static BoundsConstraint FromExpression(Expression> expression, IEnumerable parents = null) { Func compiled = expression.Compile(); var result = new BoundsConstraint { _measureFunc = compiled, RelativeTo = parents ?? ExpressionSearch.Default.FindObjects(expression).ToArray() // make sure we have our own copy }; return result; } internal Rectangle Compute() { return _measureFunc(); } } }