代码之家  ›  专栏  ›  技术社区  ›  David Veeneman

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

  •  2
  • David Veeneman  · 技术社区  · 15 年前

    有没有一种简单的方法可以改变WPF工具包的文本颜色? Calendar 控制?我以为这很简单,但颜色似乎是硬编码的。要更改它,我必须深入了解 历法 及其组成部分。

    这样做会产生一些不良的副作用。下面是一个例子:我复制了 ControlTemplate 对于 历法 控件及其组件( CalendarItem , CalendarButton , CalendarDayButton )到本地资源字典,然后为 历法 对于本地资源,如下所示:

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

    不幸的是,当我设置 CalendarDayButtonStyle 我失去了控制通常应用于月初和月底前几天的“灰显”效果。所以,看起来我必须在自己的标记或代码中恢复这种效果。

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

    2 回复  |  直到 13 年前
        1
  •  1
  •   Shai UI    13 年前

    不确定如何在Visual Studio/代码中实现这一点,但使用表达式混合相当容易。只需右键单击已拖动到设计器中的日历,单击“编辑其他模板”,选择“编辑日历”按钮样式,这将在XAML中为您提取模板,现在您可以根据需要自定义模板。

        2
  •  0
  •   David Veeneman    15 年前

    显然,要做到这一点并不容易。我必须非常深入地研究控制模板——日历文本颜色是在多个不同的点上硬编码的,并且没有链接到样式。

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