2010-01-21 5 views
2

Existe-t-il un moyen simple de modifier la couleur du texte d'un contrôle WPF Toolkit Calendar? Je pensais que ce serait simple, mais il semble que la couleur est codée en dur. Pour le changer, je vais devoir aller assez loin dans les modèles de contrôle pour le Calendar et ses composants.Modification de la couleur du texte dans un calendrier WPF?

Cela a des effets secondaires indésirables. Voici un exemple: je copiais le ControlTemplate pour le contrôle Calendar et ses composants (CalendarItem, CalendarButton, CalendarDayButton) à un dictionnaire de ressources locales, puis définissez les styles pour mon exemple du Calendar aux ressources locales, comme ceci:

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

Malheureusement, lorsque j'ai défini CalendarDayButtonStyle, j'ai perdu l'effet "grisé" que le contrôle applique normalement aux jours avant le début et après la fin du mois. Donc, il semble que je vais devoir restaurer cet effet dans mon propre balisage ou code. Avant que j'aille plus loin dans le trou du lapin, j'ai pensé que je m'arrêterais pour faire une vérification de la réalité. Ai-je vraiment besoin de faire tout cela, juste pour changer la couleur du texte sur le contrôle Calendar? Y a-t-il une approche plus simple qui me manque? Est-ce que quelqu'un a dérivé un contrôle personnalisé qui permet un simple changement de la couleur du texte? Merci de votre aide.

Répondre

0

Apparemment, il n'y a pas de moyen facile de le faire. J'ai dû creuser assez profondément dans le modèle de contrôle - la couleur du texte du calendrier a été codée en dur à un certain nombre de points différents, et non liée à un style. Le balisage de couleur de texte utilise des objets SolidColorBrush nommés, qui ne peuvent pas être simplement remplacés par des références de ressources. Vous devez séparer la propriété de couleur en une étiquette distincte et utiliser une référence à une ressource de couleur.

+0

Comment faire? j'ai essayé mais je ne peux pas –

1

Vous ne savez pas comment procéder dans Visual Studio/Code, mais en utilisant Expression Blend, c'est assez facile. Faites un clic droit sur le calendrier que vous avez fait glisser vers votre concepteur, cliquez sur "modifier des modèles supplémentaires", choisissez Modifier CalendarDayButtonStyle, cela va extraire le modèle pour vous dans xaml, maintenant vous pouvez le personnaliser comme vous le souhaitez.

Questions connexes