2015-11-03 2 views
0

Я разрабатываю приложение WPF, и я использую стандартный WPF Datepicker.WPF Datepicker Calendar Style Bug

Вот 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}" /> 

Однако, когда я использую его, верхняя часть календаря не отображается правильно:

enter image description here

Как вы можете видеть, Я не могу видеть месяц и год.

Как я могу решить эту проблему?

Спасибо за вашу помощь

EDIT

Я создал шаблон для календарного стиля:

<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> 

Как я могу обновить высоту заголовка календаря?

+1

Какая тема вы используете? Попробуйте создать копию темы datepicker через Blend, чтобы применить высоту контроля внутри каландра на основе вашего отображения культуры. – user1672994

+0

@ user1672994 Что вы подразумеваете под темой? Я использую стандартный WPF DatePicker. – adryr

+1

Я хотел сказать шаблон. – user1672994

ответ

1

Если вы создаете стиль для CalendarItem, то вы обнаружите, что Высота кнопки заголовка составляет 20, а FontSize - 10.5. Таким образом, вы переопределяете стиль CalendarItem и определяете либо высоту PART_HeaderTemplate, либо уменьшаете 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

Как создать стиль для CalendarItem? – adryr

+1

Вы можете создавать через Blend. Щелкните правой кнопкой мыши на datepicker и нажмите, чтобы сгенерировать дополнительный шаблон. – user1672994

+0

Я пробовал это, и я могу только выбрать CalendarStyle и FocusVisualStyle. – adryr