Изменение цвета текста в календаре WPF? - PullRequest
2 голосов
/ 22 января 2010

Существует ли простой способ изменить цвет текста элемента управления WPF Toolkit Calendar? Я думал, что это будет просто, но кажется, что цвет жестко закодирован. Чтобы изменить его, мне нужно довольно подробно изучить шаблоны управления для Calendar и его составных частей.

Это приводит к нежелательным побочным эффектам. Вот пример: я скопировал ControlTemplate для элемента управления Calendar и его составных частей (CalendarItem, CalendarButton, CalendarDayButton) в словарь локальных ресурсов, затем установил стили для своего экземпляра Calendar к локальным ресурсам, вот так:

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

К сожалению, когда я установил CalendarDayButtonStyle, я потерял эффект «серого», который элемент управления обычно применяется ко дням до начала и после конца месяца. Похоже, мне придется восстановить этот эффект в моей собственной разметке или коде.

Прежде чем я углубился в кроличью нору, я подумал, что остановлюсь и проверим реальность. Мне действительно нужно все это делать, просто чтобы изменить цвет текста на элементе управления Calendar? Есть ли более простой подход, который мне не хватает? Кто-нибудь получил пользовательский элемент управления, который позволяет просто изменить цвет текста? Спасибо за вашу помощь.

Ответы [ 2 ]

2 голосов
/ 09 января 2012

Не уверен, как вы можете сделать это в Visual Studio / Code, но с помощью Expression Blend это довольно просто. Просто щелкните правой кнопкой мыши календарь, который вы перетащили в дизайнер, нажмите «Редактировать дополнительные шаблоны», выберите «Редактировать CalendarDayButtonStyle», это извлечет шаблон для вас в xaml, теперь вы можете настроить его любым способом.

0 голосов
/ 24 января 2010

Видимо, не существует простого способа сделать это. Мне пришлось довольно глубоко копаться в шаблоне управления - цвет текста календаря был жестко закодирован во многих различных точках и не связан со стилем.

В разметке цвета текста используются именованные объекты SolidColorBrush, которые нельзя просто заменить ссылками на ресурсы. Вы должны выделить свойство color в виде отдельного тега и использовать ссылку на ресурс цвета.

...