我修改WPF Calendar控件的控件模板来改变文字的颜色和控制的上一页和下一页箭头。我想将颜色设置为名为MyTextBrush
的本地SolidColorBrush资源。WPF:将指定的颜色设置为资源?
的上一页和下一页按钮具有单独的控制模板,并且每个吸取用于其按钮的箭头a 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
属性为刷在这个特殊的控制模板?
感谢您的帮助。
为什么WPF在刷子上需要一个x:Name?名称通常不是必需的:您是从触发器或动画还是代码隐藏引用它?如果可以的话,你能说出什么是什么以及你想用刷子做什么? – itowlson 2010-01-24 23:02:24
它确实让我感到吃惊。 WPF日历控件(WPF工具包,2009年6月)有点破解。日历文本颜色是硬编码在三个不同的控制模板中,通常在控制模板中完成的一些事情是在代码中完成的,等等。随着代码的味道,它真的很臭。 – 2010-01-25 00:15:25
我认为他们这样做的原因是你不能在资源字典中轻松地制作某些东西,因此他们不得不烘焙“TextColor” – Schneider 2010-01-25 02:48:02