I am modifying the control template of the WPF Calendar control to change the color of text and the Previous and Next arrows on the control. I want to set the color to a local SolidColorBrush resource called MyTextBrush
.
The Previous and Next buttons have separate control templates, and each draws a Path object for its button's arrow. Here is the relevant markup for the Previous button:
<Path Margin="14,-6,0,0" Height="10" Width="6" VerticalAlignment="Center" HorizontalAlignment="Left" Stretch="Fill" Data="M288.75,232.25 L288.75,240.625 L283,236.625 z">
<Path.Fill>
<SolidColorBrush x:Name="TextColor" Color="#FF333333" />
</Path.Fill>
</Path>
Note that the color is named TextColor
, using the x:Name
property.
Here is my problem: The x:Name
property is required–WPF throws an exception if it is missing. That means I can't simply replace the entire brush with a reference to the MyTextBrush
resource, because I would lose the x:Name
value. So, how do I reference MyTextBrush
, while still retaining the x:Name
property for the brush in this particular control template?
Thanks for your help.
Best Answer
Regarding this problem it sounds like you are using a dodgy/fragile template. What control template is it?
Two more potential solutions:
Storyboard.TargetProperty="(Shape.Fill).(SolidColorBrush.Color)" Storyboard.TargetName="myNamedParent"