Como acessar um elemento nomeado em um controle que herda de um controle de modelo

Olá, isso é semelhante aComo acessar um elemento nomeado de um controle de usuário derivado no silverlight? com a diferença é herdada de um controle de modelo, não de um controle de usuário.

Eu tenho um controle de modelo chamado MyBaseControl

Xaml: -

<Style TargetType="Problemo:MyBaseControl">
        <Setter Property="Template">
            <Setter.Value>
                <ControlTemplate TargetType="Problemo:MyBaseControl">
                    <Grid x:Name="LayoutRoot" Background="White">
                        <Border Name="HeaderControl" Background="Red" />
                    </Grid>
                </ControlTemplate>
            </Setter.Value>
        </Setter>
    </Style>

Código:-

 public class MyBaseControl : Control
    {
        public UIElement Header { get; set; }

        public MyBaseControl()
        {   
            DefaultStyleKey = typeof(MyBaseControl);
        }

        public override void OnApplyTemplate()
        {
            base.OnApplyTemplate();

            var headerControl = GetTemplateChild("HeaderControl") as Border;

            if (headerControl != null)
                headerControl.Child = Header;

        }
    }

Eu tenho outro controle chamado myControl que herda do MyBaseControl Control

Xaml: -

<me:MyBaseControl x:Class="Problemo.MyControl"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
    xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
    mc:Ignorable="d"
    xmlns:me="clr-namespace:Problemo" 
    d:DesignHeight="300" d:DesignWidth="400">
    <me:MyBaseControl.Header>
        <TextBlock Name="xxx" />
    </me:MyBaseControl.Header> 
</me:MyBaseControl>

Código:-

public partial class MyControl : MyBaseControl
{
    public string Text { get; set; }

    public MyControl(string text)
    {
        InitializeComponent();
        Text = text;
        Loaded += MyControl_Loaded;
    }

    void MyControl_Loaded(object sender, RoutedEventArgs e)
    {
        base.ApplyTemplate();
        xxx.Text = Text;
    }
}

O problema é xxx é nulo. Como acesso o controle xxx no código por trás?

questionAnswers(1)

yourAnswerToTheQuestion