The answer is to not use a UserControl to do it.

Create a class that extends ContentControl

public class MyFunkyControl : ContentControl
    public static readonly DependencyProperty HeadingProperty =
        DependencyProperty.Register("Heading", typeof(string),
        typeof(HeadingContainer), new PropertyMetadata(HeadingChanged));

    private static void HeadingChanged(DependencyObject d, DependencyPropertyChangedEventArgs e)
        ((HeadingContainer) d).Heading = e.NewValue as string;

    public string Heading { get; set; }

then use a style to specify the contents

<Style TargetType="control:MyFunkyControl">
    <Setter Property="Template">
            <ControlTemplate TargetType="control:MyFunkyContainer">
                    <ContentControl Content="{TemplateBinding Content}"/>

and finally - use it

<control:MyFunkyControl Heading="Some heading!">            
    <Label Name="WithAName">Some cool content</Label>