2015-11-03 1 views
0

Je développe une application WPF et j'utilise le standard WPF Datepicker.WPF Datepicker Calendrier Style Bug

Voici le code XAML:

<DatePicker Grid.Column="0" Grid.Row="5" Margin="5,0,5,12" 
    x:Name="SendungDatePicker" SelectedDate="{Binding Path=ProduktionsDatum}" 
    ToolTip="{x:Static resx:MetaData.DateTooltip}" /> 

Cependant, quand je l'utilise, la partie supérieure du calendrier n'est pas affiché correctement:

enter image description here

Comme vous pouvez le voir, Je ne peux pas voir le mois et l'année.

Comment puis-je résoudre ce problème?

Merci pour votre aide

EDIT

J'ai réalisé un modèle pour le style de calendrier:

<Style x:Key="CalendarStyle1" TargetType="{x:Type Calendar}"> 
     <Setter Property="Foreground" Value="#FF333333"/> 
     <Setter Property="Background"> 
      <Setter.Value> 
       <LinearGradientBrush EndPoint="0.5,1" StartPoint="0.5,0"> 
        <GradientStop Color="#FFE4EAF0" Offset="0"/> 
        <GradientStop Color="#FFECF0F4" Offset="0.16"/> 
        <GradientStop Color="#FFFCFCFD" Offset="0.16"/> 
        <GradientStop Color="White" Offset="1"/> 
       </LinearGradientBrush> 
      </Setter.Value> 
     </Setter> 
     <Setter Property="BorderBrush"> 
      <Setter.Value> 
       <LinearGradientBrush EndPoint="0.5,1" StartPoint="0.5,0"> 
        <GradientStop Color="#FFA3AEB9" Offset="0"/> 
        <GradientStop Color="#FF8399A9" Offset="0.375"/> 
        <GradientStop Color="#FF718597" Offset="0.375"/> 
        <GradientStop Color="#FF617584" Offset="1"/> 
       </LinearGradientBrush> 
      </Setter.Value> 
     </Setter> 
     <Setter Property="BorderThickness" Value="1"/> 
     <Setter Property="Template"> 
      <Setter.Value> 
       <ControlTemplate TargetType="{x:Type Calendar}"> 
        <StackPanel x:Name="PART_Root" HorizontalAlignment="Center"> 
         <CalendarItem x:Name="PART_CalendarItem" BorderBrush="{TemplateBinding BorderBrush}" BorderThickness="{TemplateBinding BorderThickness}" Background="{TemplateBinding Background}" Style="{TemplateBinding CalendarItemStyle}" Height="Auto" Width="Auto"/> 
        </StackPanel> 
       </ControlTemplate> 
      </Setter.Value> 
     </Setter> 
    </Style> 

Comment puis-je mettre à jour la hauteur de l'en-tête du calendrier?

+1

Quel est le thème que vous utilisez? Essayez de générer une copie du thème de datepicker à travers Blend appliquer la hauteur de contrôle à l'intérieur du calendrier en fonction de votre affichage de la culture. – user1672994

+0

@ user1672994 Que voulez-vous dire par thème? J'utilise le standard DatePicker WPF. – adryr

+1

Je voulais dire Template. – user1672994

Répondre

1

Si vous générez un style pour CalendarItem, vous constaterez que le bouton Height of Header a la valeur 20 et FontSize 10.5. Ainsi, vous remplacez le style CalendarItem et vous définissez la hauteur de PART_HeaderTemplate ou le FontSize.

<Button x:Name="PART_PreviousButton" Grid.Column="0" Focusable="False" HorizontalAlignment="Left" Height="20" Grid.Row="0" Template="{StaticResource PreviousButtonTemplate}" Width="28"/> 
<Button x:Name="PART_HeaderButton" Grid.Column="1" FontWeight="Bold" Focusable="False" FontSize="10.5" HorizontalAlignment="Center" Grid.Row="0" Template="{StaticResource HeaderButtonTemplate}" VerticalAlignment="Center"/> 
<Button x:Name="PART_NextButton" Grid.Column="2" Focusable="False" HorizontalAlignment="Right" Height="20" Grid.Row="0" Template="{StaticResource NextButtonTemplate}" Width="28"/> 
+0

Comment puis-je générer un style pour CalendarItem? – adryr

+1

Vous pouvez générer via Blend. Faites un clic droit sur datepicker et cliquez sur générer un modèle supplémentaire. – user1672994

+0

J'ai essayé cela et je ne peux que sélectionner CalendarStyle et FocusVisualStyle. – adryr