diff --git a/Perspex/Controls/Control.cs b/Perspex/Controls/Control.cs
index bae326402d..6cad776216 100644
--- a/Perspex/Controls/Control.cs
+++ b/Perspex/Controls/Control.cs
@@ -212,8 +212,15 @@ namespace Perspex.Controls
});
}
- protected DataTemplate FindDataTemplate(object content)
+ protected virtual DataTemplate FindDataTemplate(object content)
{
+ IVisual visual = content as IVisual;
+
+ if (visual != null)
+ {
+ return new DataTemplate(_ => true, x => visual);
+ }
+
ILogical node = this;
while (node != null)
diff --git a/Perspex/Controls/HeaderedContentControl.cs b/Perspex/Controls/HeaderedContentControl.cs
new file mode 100644
index 0000000000..047698d62c
--- /dev/null
+++ b/Perspex/Controls/HeaderedContentControl.cs
@@ -0,0 +1,43 @@
+// -----------------------------------------------------------------------
+//
+// Copyright 2014 MIT Licence. See licence.md for more information.
+//
+// -----------------------------------------------------------------------
+
+namespace Perspex.Controls
+{
+ using System;
+ using System.Collections.Generic;
+ using System.Linq;
+
+ public class HeaderedContentControl : ContentControl, ILogical, IHeadered
+ {
+ public static readonly PerspexProperty