// ----------------------------------------------------------------------- // // Copyright 2014 MIT Licence. See licence.md for more information. // // ----------------------------------------------------------------------- namespace Perspex.Controls { using System; using Perspex.Styling; 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); var root = this.build(templatedParent); return root; } } }