我正在修改WPF Calendar控件的控件模板,以更改文本的颜色以及控件上的上一页和下一页箭头。我想将颜色设置为名为MyTextBrush
的本地SolidColorBrush资源。
“上一个”和“下一个”按钮具有单独的控件模板,每个按钮都为其按钮的箭头绘制一个Path对象。以下是上一页按钮的相关标记:
<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>
请注意,使用TextColor
属性将颜色命名为x:Name
。
这是我的问题:需要x:Name
属性 - 如果缺少WPF,则抛出异常。这意味着我不能简单地用对MyTextBrush
资源的引用替换整个画笔,因为我会丢失x:Name
值。那么,如何引用MyTextBrush
,同时仍然保留此特定控件模板中画笔的x:Name
属性?
感谢您的帮助。
答案 0 :(得分:1)
那么,我该如何引用MyTextBrush, 同时仍保留x:名称 这个画笔的属性 特定的控制模板?
关于这个问题,听起来你正在使用一个狡猾/脆弱的模板。它是什么控制模板?
另外两个可能的解决方案:
Storyboard.TargetProperty="(Shape.Fill).(SolidColorBrush.Color)" Storyboard.TargetName="myNamedParent"
答案 1 :(得分:0)
最好的解决方案似乎是将Color
属性分解为自己的标记,并为此使用资源引用。这是它的样子:
<!-- FS: Changed template brush color -->
<SolidColorBrush x:Name="TextColor">
<SolidColorBrush.Color>
<StaticResource ResourceKey="FsTextColor" />
</SolidColorBrush.Color>
</SolidColorBrush>