2015-11-03 94 views
0

我正在开发一个WPF应用程序,并使用标准的WPF Datepicker。WPF Datepicker日历风格错误

这里是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

正如你所看到的,我看不到月份和年份。

我该如何解决这个问题?

谢谢您的帮助

编辑

我生成日历样式模板:

<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

你正在使用什么主题?尝试通过Blend生成日期选择器主题的副本,根据您的文化显示应用日历内的控制高度。 – user1672994

+0

@ user1672994你是什么意思的主题?我使用标准的WPF DatePicker。 – adryr

+1

我打算说模板。 – user1672994

回答

1

如果您为CalendarItem生成样式,那么您会发现标题按钮高度为20,字体大小为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