Hi.
I'm trying to make a ControlTemplate for a GroupBox such as if a TextBlock is declared in the Header it's background should be set to yellow.
The problem is that, although I define a style for TextBlocks in the ContentPresenter for the Header, it's not applied except on those TextBlocks which are autogenerated by WPF.
Here is the code :
<Window
x:Class="TestHeaderTemplate.Window1"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="Window1"
SizeToContent="WidthAndHeight">
<Window.Resources>
<Style
TargetType="{x:Type GroupBox}">
<Setter
Property="Template">
<Setter.Value>
<ControlTemplate
TargetType="{x:Type GroupBox}">
<Border
Margin="{TemplateBinding Margin}"
BorderBrush="Black"
BorderThickness="1">
<StackPanel>
<Border
Margin="0,0,0,5"
BorderThickness="5"
BorderBrush="LightBlue"
>
<ContentPresenter
ContentSource="Header">
<ContentPresenter.Resources>
<Style
TargetType="{x:Type TextBlock}">
<Setter
Property="Background"
Value="Yellow" />
</Style>
</ContentPresenter.Resources>
</ContentPresenter>
</Border>
<ContentPresenter
ContentSource="Content" />
</StackPanel>
</Border>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
</Window.Resources>
<StackPanel>
<TextBox
Text="All TextBoxes in a GroupBox's Header should be yellow, whether declared or autogenerated." />
<GroupBox
x:Name="firstGroupBox"
Margin="5"
Header="I am a TextBlock autogenerated by WPF. Since I'm in the Header, I should be yellow.">
<TextBlock
Text="I'm a TextBlock declared in the content of the GroupBox. I should NOT be yellow." />
</GroupBox>
<GroupBox
x:Name="secondGroupbox"
Margin="5"
>
<HeaderedContentControl.Header>
<TextBlock
x:Name="notStyledTextBlock"
Text="I'm a TextBlock declared in the header. I should be yellow since I'm in the header."
VerticalAlignment="Center" />
</HeaderedContentControl.Header>
<TextBlock
Text="I'm declared in the content so I should not be yellow." />
</GroupBox>
</StackPanel>
</Window>
As you can see if you try, the background of the TextBlock named "notStyledTextBlock" in the second GroupBox is not yellow, which means the style defined in the resources of the ContentPresenter in the ControlTemplate is not applied.
Surprisingly, the one that was autogenerated by WPF as a container for the header text of the first GroupBox has its background yellow.
What can I do to make it so my style is applied to the "notStyledTextBlock" TextBlock ?