I've got a small WPF issue here that I can't figure out.
I'm trying to set up a ResourceDictionary
containing a number of colors, brushes and ControlTemplate
entries.
My problem is that I'm trying the set the foreground brush of a Label
to a resource in the same file and that bit isn't working and there's no trace messages about it.
<Color x:Shared="false" x:Key="DefaultForegroundColor" A="255" R="0" G="0" B="0" />
<!--<Color x:Shared="false" x:Key="DefaultForegroundColor" A="255" R="255" G="0" B="0" />-->
<SolidColorBrush x:Shared="false" x:Key="DefaultForegroundBrush" Color="{DynamicResource DefaultForegroundColor}"/>
<Color x:Shared="false" x:Key="HeadingColor" A="255" R="17" G="158" B="218" />
<SolidColorBrush x:Shared="false" x:Key="HeadingBrush" Color="{DynamicResource HeadingColor}"/>
<Style TargetType="{x:Type Label}" x:Key="SectionHeadingStyle">
<Setter Property="FontSize" Value="18"/>
<Setter Property="Foreground" Value="{DynamicResource HeadingBrush}"/>
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="Label">
<Border BorderThickness="0,0,0,2" BorderBrush="{DynamicResource DefaultForegroundBrush}" HorizontalAlignment="Left">
<ContentPresenter Margin="5"/>
</Border>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
The border colour works fine (even when it's not black) but the foreground of the label remains black instead of a light blue. Any ideas what I'm doing wrong?
Thanks.
UPDATE Forgot to mention that it looks good in the designer too.
UPDATE 2
Upon Snooping the Visual Tree it appears that the Foreground
colour makes it most of way through the template until the ContentPresenter
uses a TextBlock
to display the header text. The TextBlock
remains black while the ContentPresenter above has a nice shade of blue set to TextElement.Foreground
. Is there something else I can do in the Template to give the created TextBlock
the foreground colour?
Just realised I never closed this question:
In the end there was a library importing resources at application level. For some reason these caused a conflict with my resources and neither were applied. Moving the library's resources to Window or UserControl level fixed the issue.