Je veux styler les BlackoutDates du calendrier WPF. La visualisation par défaut est une croix grise au-dessus du numéro de date. Comment ne les griser que par exemple?Comment styliser les BlackoutDates du calendrier WPF
Répondre
Ici, vous allez
<Calendar>
<Calendar.CalendarDayButtonStyle>
<Style TargetType="CalendarDayButton" BasedOn="{StaticResource {x:Type CalendarDayButton}}">
<Style.Triggers>
<Trigger Property="IsBlackedOut" Value="True">
<Setter Property="Background" Value="LightGray"/>
</Trigger>
</Style.Triggers>
</Style>
</Calendar.CalendarDayButtonStyle>
<Calendar.BlackoutDates>
<CalendarDateRange Start="24-June-2014" End="25-June-2014"/>
</Calendar.BlackoutDates>
</Calendar>
j'avoir spécifié un style personnalisé pour CalendarDayButtonStyle
et dans ce style que je défini un déclencheur sur IsBlackedOut
et régler le Background
-LightGray
résultat
vous pouvez choisir de manipuler autre propriété s selon vos besoins
Retirer le black-out existante
pour enlever panne existante, vous avez des options de définition d'un modèle personnalisé pour le bouton jour de calendrier, mais l'inconvénient est que vous aurez à maintenir pour chaque thème par exemple Luna, classique etc
Je vais proposer une solution qui vous aider à utiliser le modèle existant donc pas besoin de se soucier de ces questions
je les propriétés attachées à même
classe CalenderHelper
namespace CSharpWPF
{
class CalenderHelper : DependencyObject
{
public static bool GetIsBlackOutDisabled(DependencyObject obj)
{
return (bool)obj.GetValue(IsBlackOutDisabledProperty);
}
public static void SetIsBlackOutDisabled(DependencyObject obj, bool value)
{
obj.SetValue(IsBlackOutDisabledProperty, value);
}
// Using a DependencyProperty as the backing store for IsBlackOutDisabled. This enables animation, styling, binding, etc...
public static readonly DependencyProperty IsBlackOutDisabledProperty =
DependencyProperty.RegisterAttached("IsBlackOutDisabled", typeof(bool), typeof(CalenderHelper), new PropertyMetadata(false, OnIsBlackOutDisabledChanged));
private static void OnIsBlackOutDisabledChanged(DependencyObject d, DependencyPropertyChangedEventArgs e)
{
CalendarDayButton dayButton = d as CalendarDayButton;
if (dayButton.IsLoaded)
{
SetBlackout(dayButton, (bool)e.NewValue);
}
else
{
dayButton.Loaded += (s, ee) =>
{
SetBlackout(dayButton, (bool)e.NewValue);
};
}
}
static void SetBlackout(CalendarDayButton dayButton, bool collapsed)
{
ControlTemplate template = dayButton.Template;
Path blackoutPath = template.FindName("Blackout", dayButton) as Path;
if (collapsed)
blackoutPath.Visibility = System.Windows.Visibility.Collapsed;
else
blackoutPath.Visibility = System.Windows.Visibility.Visible;
}
}
}
J'ai créé une classe CalenderHelper
avec une propriété attachée IsBlackOutDisabled
qui cache l'élément d'occultation dans le modèle existant
XAML
<Calendar x:Name="cal" xmlns:l="clr-namespace:CSharpWPF">
<Calendar.CalendarDayButtonStyle>
<Style TargetType="CalendarDayButton" BasedOn="{StaticResource {x:Type CalendarDayButton}}">
<Style.Triggers>
<Trigger Property="IsBlackedOut" Value="True">
<Setter Property="Background" Value="LightGray"/>
<Setter Property="l:CalenderHelper.IsBlackOutDisabled" Value="True"/>
</Trigger>
</Style.Triggers>
</Style>
</Calendar.CalendarDayButtonStyle>
<Calendar.BlackoutDates>
<CalendarDateRange Start="24-June-2014" End="25-June-2014"/>
</Calendar.BlackoutDates>
</Calendar>
J'ai permis à mon nouveau a créé la propriété l:CalenderHelper.IsBlackOutDisabled
dans le déclencheur, qui à son tour masquera le visuel d'occultation par défaut
résultat
cette approche rendent souple pour beaucoup faire, vous pouvez coder pour d'autres fonctions de sophisticate qui ne sont pas facilement réalisable via XAML simple,
* La visualisation par défaut est une croix grise au-dessus du numéro de date. Comment ne les griser par exemple? * Je crois que cela signifie, * Comment puis-je griser les dates au lieu de les avoir barrées *? – Sheridan
@Sheridan merci de souligner, laissez-moi apporter cela aussi. – pushpraj
- 1. Styliser différents niveaux d'une arborescence WPF différemment?
- 2. Comment styliser des lignes gridview pendant l'exécution dans wpf?
- 3. GWT Comment styliser l'arrière-plan du CellList
- 4. calendrier initialize dans WPF
- 5. Calendrier WPF: personnalisez le contrôle pour afficher les numéros de semaine du calendrier
- 6. Comment styliser l'info-bulle WPF comme une bulle de dialogue?
- 7. Calendrier WPF recommandé
- 8. Comment styliser un cercle?
- 9. Comment styliser asp.net dropdownlist
- 10. Comment styliser les erreurs de l'éditeur GWT
- 11. Comment styliser les liens via le textile?
- 12. Comment styliser une étiquette avec deux-points
- 13. Comment obtenir tous les événements du calendrier?
- 14. Comment réinitialiser le calendrier en wpf?
- 15. Comment styliser &
- 16. Comment styliser un UISegmentedControll?
- 17. Modifier la couleur du texte sur le calendrier WPF?
- 18. Comment styliser des éléments basés sur les trois premiers caractères?
- 19. Modifier le contrôle du calendrier WPF dans Visual Studio 2010
- 20. Supprimer les entrées du calendrier
- 21. WPF Modification de graphique lorsque la date du calendrier change
- 22. Calendrier DayView gratuit pour WPF?
- 23. Modification de la couleur du texte dans un calendrier WPF?
- 24. Est-il possible de styliser un BulletDecorator dans WPF?
- 25. Contrôle du calendrier WPF maintenant sur la souris
- 26. Flot: comment styliser les nombres dans les graphiques à barres?
- 27. Calendrier WPF: liaison aux commandes MVVM?
- 28. Comment styliser plusieurs instances différemment du même contrôle jquery?
- 29. Comment styliser des éléments non-Widget comme les widgets jQuery
- 30. Comment styliser une page statique dans les rails 4 app
Vous devez creuser dans le défaut massif [ 'ControlTemplate' pour la classe' Calendar'] (http://msdn.microsoft.com/en-us/library/ff468218 (v = vs.110) .aspx) et modifiez-le selon vos besoins. – Sheridan
@aDoubleSo créer un modèle personnalisé pour 'CalendarDayButton' en changeant' Calendar.CalendarDayButtonStyle' qui gère l'état visuel 'BlackoutDay' comme vous le souhaitez. Notez que vous devrez également gérer d'autres états – dkozl