// ----------------------------------------------------------------------- // // Copyright 2014 MIT Licence. See licence.md for more information. // // ----------------------------------------------------------------------- namespace Perspex.Controls { using System; public class ControlTemplate { private Func build; public ControlTemplate(Func build) { Contract.Requires(build != null); this.build = build; } public static ControlTemplate Create(Func build) where TControl : ITemplatedControl { Contract.Requires(build != null); return new ControlTemplate(c => build((TControl)c)); } public Control Build(ITemplatedControl templatedParent) { Contract.Requires(templatedParent != null); Control root = this.build(templatedParent); root.TemplatedParent = templatedParent; return root; } } }