2010-01-21 102 views
2

有没有简单的方法来改变WPF Toolkit Calendar控件的文本颜色?我认为这很简单,但看起来颜色是硬编码的。要改变它,我将不得不深入Calendar及其组成部分的控制模板。更改WPF日历上的文字颜色?

这样做有一些不良的副作用。下面是一个例子:我复制了ControlTemplateCalendar控制及其零件(CalendarItemCalendarButtonCalendarDayButton)到本地资源字典,然后设置样式为我的Calendar到本地资源的情况下,像这样:

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

不幸的是,当我设置CalendarDayButtonStyle时,我失去了控件通常在开始之前的几天和月底之后的“变灰”效果。所以,看起来我将不得不在我自己的标记或代码中恢复这种效果。

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

回答

0

显然,没有简单的方法来做到这一点。我不得不深入挖掘控件模板 - 日历文本颜色在许多不同的点上被硬编码,并且没有链接到样式。

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

+0

该怎么做?我尝试过但我不能 – 2017-08-08 08:47:25

1

不知道如何在Visual Studio/Code中做到这一点,但使用Expression Blend相当简单。只需右键单击已拖入设计器的日历,点击“编辑其他模板”,选择编辑CalendarDayButtonStyle,这将在xaml中为您提取模板,现在您可以以任何您想要的方式自定义它。