更改WPF日历上的文本颜色?

时间:2010-01-21 22:35:55

标签: wpf wpf-controls calendar styles wpftoolkit

是否有一种简单的方法可以更改WPF Toolkit Calendar控件的文本颜色?我认为这很简单,但看起来颜色是硬编码的。要改变它,我将不得不深入研究Calendar及其组成部分的控件模板。

这样做会产生一些不良副作用。下面是一个示例:我将ControlTemplate控件的Calendar及其组成部分(CalendarItemCalendarButtonCalendarDayButton)复制到本地资源字典,然后将我的Calendar实例的样式设置为本地资源,如下所示:

<toolkit:Calendar  
    Name="calendar1" 
    Style="{StaticResource Outlook2010CalendarStyle}" 
    CalendarItemStyle="{StaticResource Outlook2010CalendarItemStyle}"
    CalendarButtonStyle="{StaticResource Outlook2010CalendarButtonStyle}"
    CalendarDayButtonStyle="{StaticResource Outlook2010CalendarDayButtonStyle}"  />

不幸的是,当我设置CalendarDayButtonStyle时,我失去了控件通常适用于开始前和月末之后的“灰显”效果。因此,看起来我将不得不在我自己的标记或代码中恢复该效果。

在我深入兔洞之前,我想我会停下来做一个现实检查。我真的需要做这一切,只是为了改变Calendar控件上文字的颜色吗?我缺少一种更简单的方法吗?有没有人派生出一个允许简单改变文字颜色的自定义控件?谢谢你的帮助。

2 个答案:

答案 0 :(得分:2)

不确定如何在Visual Studio / Code中执行此操作,但使用Expression Blend非常简单。只需右键单击已拖动到设计器的日历,点击“编辑其他模板”,选择编辑CalendarDayButtonStyle,这将在xaml中为您提取模板,现在您可以按照自己的方式自定义它。

答案 1 :(得分:0)

显然,没有简单的方法可以做到这一点。我不得不深入挖掘控件模板 - 日历文本颜色在许多不同的点上进行了硬编码,并没有与样式相关联。

文本颜色标记使用命名的SolidColorBrush对象,这些对象不能简单地由资源引用替换。您必须将color属性作为单独的标记分解,并使用对颜色资源的引用。