diff options
Diffstat (limited to 'Xamarin.Forms.Core/BoundsConstraint.cs')
-rw-r--r-- | Xamarin.Forms.Core/BoundsConstraint.cs | 34 |
1 files changed, 34 insertions, 0 deletions
diff --git a/Xamarin.Forms.Core/BoundsConstraint.cs b/Xamarin.Forms.Core/BoundsConstraint.cs new file mode 100644 index 00000000..43be86eb --- /dev/null +++ b/Xamarin.Forms.Core/BoundsConstraint.cs @@ -0,0 +1,34 @@ +using System; +using System.Collections.Generic; +using System.Linq.Expressions; + +namespace Xamarin.Forms +{ + public class BoundsConstraint + { + Func<Rectangle> _measureFunc; + + BoundsConstraint() + { + } + + internal IEnumerable<View> RelativeTo { get; set; } + + public static BoundsConstraint FromExpression(Expression<Func<Rectangle>> expression, IEnumerable<View> parents = null) + { + Func<Rectangle> compiled = expression.Compile(); + var result = new BoundsConstraint + { + _measureFunc = compiled, + RelativeTo = parents ?? ExpressionSearch.Default.FindObjects<View>(expression).ToArray() // make sure we have our own copy + }; + + return result; + } + + internal Rectangle Compute() + { + return _measureFunc(); + } + } +}
\ No newline at end of file |