As a follow up to this question where it was suggested I use a ContentControl, I have run into a scenario when I use a custom made class that dervies from ContentControl on a page, any controls defined within that ContentControl are not accessible from the page. All member variables turn out null.
For Instance, say the custom class I created that derives from ContentControl is named MyGroupBox and I try to use this inside a Page control:
<UserControl x:Class="MyApplication.MyUserControl">
<local:MyGroupBox Title="Basic Information">
<TextBox x:Name="MyTextBox" />
</local:MyGroupBox>
</UserControl>
When I try to access MyTextBox from within the Page's code behind, the member variable is null. What is the best workaround for this scenario to get access to these controls so that I can use them in the Page's code behind?
Thanks!
EDIT: Here is the Default Template for the MyGroupBox control
<Style TargetType="local:MyGroupBox">
<Setter Property="Foreground" Value="#FF000000"/>
<Setter Property="HorizontalContentAlignment" Value="Left"/>
<Setter Property="VerticalContentAlignment" Value="Top"/>
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="local:MyGroupBox">
<Border BorderThickness="1" Margin="8,8,0,0">
<Border.BorderBrush>
<LinearGradientBrush EndPoint="0.5,1" StartPoint="0.5,0">
<GradientStop Color="#FF979797" Offset="0"/>
<GradientStop Color="#FFF1F1F1" Offset="1"/>
</LinearGradientBrush>
</Border.BorderBrush>
<StackPanel>
<Grid>
<Rectangle>
<Rectangle.Fill>
<LinearGradientBrush EndPoint="0.5,1" StartPoint="0.5,0">
<GradientStop Color="White" Offset="0"/>
<GradientStop Color="#FFDFE2ED" Offset="1"/>
</LinearGradientBrush>
</Rectangle.Fill>
</Rectangle>
<TextBlock Text="{TemplateBinding Title}" Margin="10,3,3,3" TextAlignment="Center" HorizontalAlignment="Left" />
</Grid>
<ContentPresenter Cursor="{TemplateBinding Cursor}" ContentTemplate="{TemplateBinding ContentTemplate}" Content="{TemplateBinding Content}" HorizontalAlignment="{TemplateBinding HorizontalContentAlignment}" Margin="{TemplateBinding Padding}" VerticalAlignment="{TemplateBinding VerticalContentAlignment}"/>
</StackPanel>
</Border>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
EDIT:
public MyUserControl()
{
InitializeComponent();
if (this.MyTextBox == null)
{
// MyTextBox is null at this point - is there a way to get
// the InitializeComponent method to find the control named MyTextBox when
// it is inside of a ContentControl derived class?
MessageBox.Show("MyTextBox is null");
}
}