diff --git a/Perspex.Controls/AdornerTemplate.cs b/Perspex.Controls/AdornerTemplate.cs
new file mode 100644
index 0000000000..8a93de3ca5
--- /dev/null
+++ b/Perspex.Controls/AdornerTemplate.cs
@@ -0,0 +1,27 @@
+// -----------------------------------------------------------------------
+//
+// Copyright 2014 MIT Licence. See licence.md for more information.
+//
+// -----------------------------------------------------------------------
+
+namespace Perspex.Controls
+{
+ using System;
+
+ public class AdornerTemplate
+ {
+ private Func build;
+
+ public AdornerTemplate(Func build)
+ {
+ Contract.Requires(build != null);
+
+ this.build = build;
+ }
+
+ public Control Build()
+ {
+ return this.build();
+ }
+ }
+}
diff --git a/Perspex.Controls/Control.cs b/Perspex.Controls/Control.cs
index 40f50695aa..d92a2b8845 100644
--- a/Perspex.Controls/Control.cs
+++ b/Perspex.Controls/Control.cs
@@ -25,6 +25,9 @@ namespace Perspex.Controls
public static readonly PerspexProperty