WPF 基础控件之 DatePicker 样式

Posted dotNET跨平台

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了WPF 基础控件之 DatePicker 样式相关的知识,希望对你有一定的参考价值。

此群已满340500857 ,请加新群458041663

       由于微信群人数太多入群请添加小编微信号

 yanjinhuawechatW_Feng_aiQ 邀请入群

 需备注WPF开发者 

 PS:有更好的方式欢迎推荐。

支持Nuget

Install-Package WPFDevelopers.Minimal -Version 3.2.0

01

代码如下

一、创建 Styles.DatePicker.xaml  代码如下。

<ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
                    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
                    xmlns:sys="clr-namespace:System;assembly=mscorlib"
                    xmlns:wpfs="clr-namespace:WPFDevelopers.Minimal.Helpers">
    
    <ResourceDictionary.MergedDictionaries>
        <ResourceDictionary Source="../Themes/Basic/ControlBasic.xaml"/>
        <ResourceDictionary Source="../Themes/Basic/Animations.xaml"/>
    </ResourceDictionary.MergedDictionaries>

    <Style TargetType="x:Type CalendarDayButton" x:Key="CalendarDayButtonStyle" BasedOn="StaticResource ControlBasicStyle">
        <Setter Property="Width"  Value="32" />
        <Setter Property="Height" Value="32" />
        <Setter Property="FontSize"  Value="12" />
        <Setter Property="HorizontalContentAlignment" Value="Center" />
        <Setter Property="VerticalContentAlignment" Value="Center" />
        <Setter Property="Cursor" Value="Hand"/>
        <Setter Property="Template">
            <Setter.Value>
                <ControlTemplate TargetType="CalendarDayButton">
                    <Grid>
                        <VisualStateManager.VisualStateGroups>
                            <VisualStateGroup Name="CommonStates">
                                <VisualStateGroup.Transitions>
                                    <VisualTransition GeneratedDuration="0:0:0.1" />
                                </VisualStateGroup.Transitions>
                                <VisualState Name="Normal" />
                                <VisualState Name="MouseOver"/>
                                <VisualState Name="Pressed"/>
                                <VisualState Name="Disabled"/>
                            </VisualStateGroup>
                            <VisualStateGroup Name="SelectionStates">
                                <VisualStateGroup.Transitions>
                                    <VisualTransition GeneratedDuration="0" />
                                </VisualStateGroup.Transitions>
                                <VisualState Name="Unselected" />
                                <VisualState Name="Selected"/>
                            </VisualStateGroup>
                            <VisualStateGroup Name="CalendarButtonFocusStates">
                                <VisualStateGroup.Transitions>
                                    <VisualTransition GeneratedDuration="0" />
                                </VisualStateGroup.Transitions>
                                <VisualState Name="CalendarButtonFocused"/>
                                <VisualState Name="CalendarButtonUnfocused"/>
                            </VisualStateGroup>
                            <VisualStateGroup Name="ActiveStates">
                                <VisualStateGroup.Transitions>
                                    <VisualTransition GeneratedDuration="0" />
                                </VisualStateGroup.Transitions>
                                <VisualState Name="Active" />
                                <VisualState Name="Inactive"/>
                            </VisualStateGroup>
                            <VisualStateGroup Name="DayStates">
                                <VisualStateGroup.Transitions>
                                    <VisualTransition GeneratedDuration="0" />
                                </VisualStateGroup.Transitions>
                                <VisualState Name="RegularDay" />
                                <VisualState Name="Today"/>
                            </VisualStateGroup>
                            <VisualStateGroup Name="BlackoutDayStates">
                                <VisualStateGroup.Transitions>
                                    <VisualTransition GeneratedDuration="0" />
                                </VisualStateGroup.Transitions>
                                <VisualState Name="NormalDay" />
                                <VisualState Name="BlackoutDay"/>
                            </VisualStateGroup>
                        </VisualStateManager.VisualStateGroups>
                        <Ellipse x:Name="SelectedBackground" Opacity="0">
                            <Ellipse.Fill>
                                <SolidColorBrush Color="DynamicResource PrimaryMouseOverColor" />
                            </Ellipse.Fill>
                        </Ellipse>
                        <Border Background="TemplateBinding Background"
                  BorderThickness="TemplateBinding BorderThickness"
                  BorderBrush="TemplateBinding BorderBrush" />
                        <Ellipse x:Name="DayButtonFocusVisual" Visibility="Collapsed"
                     IsHitTestVisible="False">
                            <Ellipse.Fill>
                                <SolidColorBrush Color="DynamicResource PrimaryNormalColor" />
                            </Ellipse.Fill>
                        </Ellipse>
                        <ContentPresenter x:Name="NormalText"
                            HorizontalAlignment="TemplateBinding HorizontalContentAlignment"
                            VerticalAlignment="TemplateBinding VerticalContentAlignment">
                            <TextElement.Foreground>
                                <SolidColorBrush Color="DynamicResource RegularTextColor" />
                            </TextElement.Foreground>
                        </ContentPresenter>
                        <Path x:Name="Blackout" Opacity="0"  Margin="3" HorizontalAlignment="Stretch" VerticalAlignment="Stretch"
                              Fill="#FF000000" Stretch="Fill"
                              Data="StaticResource PathBlackout" />
                    </Grid>
                    <ControlTemplate.Triggers>
                        <MultiTrigger>
                            <MultiTrigger.Conditions>
                                <Condition Property="IsSelected" Value="False"/>
                                <Condition Property="IsMouseOver" Value="True"/>
                            </MultiTrigger.Conditions>
                            <Setter TargetName="NormalText" Property="TextElement.Foreground" Value="DynamicResource PrimaryMouseOverSolidColorBrush"/>
                        </MultiTrigger>
                        <Trigger Property="IsToday" Value="True">
                            <Setter TargetName="NormalText" Property="TextElement.FontWeight" Value="Bold"/>
                            <Setter TargetName="NormalText" Property="TextElement.Foreground" Value="DynamicResource PrimaryNormalSolidColorBrush"/>
                        </Trigger>
                        <Trigger Property="IsSelected" Value="True">
                            <Setter TargetName="NormalText" Property="TextElement.Foreground" Value="DynamicResource WhiteSolidColorBrush"/>
                            <Setter TargetName="SelectedBackground" Property="Opacity" Value="1"/>
                        </Trigger>
                        <Trigger Property="IsInactive" Value="True">
                            <Setter TargetName="NormalText" Property="TextElement.Foreground" Value="DynamicResource BaseSolidColorBrush"/>
                        </Trigger>
                        <Trigger Property="IsBlackedOut" Value="True">
                            <Setter TargetName="Blackout" Property="Opacity" Value=".2"/>
                        </Trigger>
                    </ControlTemplate.Triggers>
                </ControlTemplate>
            </Setter.Value>
        </Setter>
    </Style>

    <Style TargetType="x:Type CalendarButton" x:Key="CalendarButtonStyle" BasedOn="StaticResource ControlBasicStyle">
        <Setter Property="MinWidth" Value="48" />
        <Setter Property="MinHeight"  Value="32" />
        <Setter Property="FontSize" Value="12" />
        <Setter Property="HorizontalContentAlignment" Value="Center" />
        <Setter Property="VerticalContentAlignment" Value="Center" />
        <Setter Property="Cursor" Value="Hand"/>
        <Setter Property="Template">
            <Setter.Value>
                <ControlTemplate TargetType="CalendarButton">
                    <Grid>
                        <VisualStateManager.VisualStateGroups>
                            <VisualStateGroup Name="CommonStates">
                                <VisualStateGroup.Transitions>
                                    <VisualTransition GeneratedDuration="0:0:0.1" />
                                </VisualStateGroup.Transitions>
                                <VisualState Name="Normal" />
                                <VisualState Name="MouseOver">
                                    <Storyboard>
                                        <ColorAnimationUsingKeyFrames Storyboard.TargetName="NormalText" 
                                                                          Storyboard.TargetProperty="(TextElement.Foreground).(SolidColorBrush.Color)">
                                            <EasingColorKeyFrame KeyTime="0" Value="DynamicResource PrimaryMouseOverColor" >
                                            </EasingColorKeyFrame>
                                        </ColorAnimationUsingKeyFrames>
                                    </Storyboard>
                                </VisualState>
                                <VisualState Name="Pressed"/>
                            </VisualStateGroup>
                            <VisualStateGroup Name="SelectionStates">
                                <VisualStateGroup.Transitions>
                                    <VisualTransition GeneratedDuration="0" />
                                </VisualStateGroup.Transitions>
                                <VisualState Name="Unselected" />
                                <VisualState Name="Selected">
                                    <Storyboard>
                                        <ColorAnimationUsingKeyFrames Storyboard.TargetName="NormalText" 
                                                                          Storyboard.TargetProperty="(TextElement.Foreground).(SolidColorBrush.Color)">
                                            <EasingColorKeyFrame KeyTime="0" Value="DynamicResource PrimaryNormalColor" >
                                            </EasingColorKeyFrame>
                                        </ColorAnimationUsingKeyFrames>
                                    </Storyboard>
                                </VisualState>
                            </VisualStateGroup>
                            <VisualStateGroup Name="ActiveStates">
                                <VisualStateGroup.Transitions>
                                    <VisualTransition GeneratedDuration="0" />
                                </VisualStateGroup.Transitions>
                                <VisualState Name="Active" />
                                <VisualState Name="Inactive"/>
                            </VisualStateGroup>
                            <VisualStateGroup Name="CalendarButtonFocusStates">
                                <VisualStateGroup.Transitions>
                                    <VisualTransition GeneratedDuration="0" />
                                </VisualStateGroup.Transitions>
                                <VisualState Name="CalendarButtonFocused">
                                    <Storyboard>
                                        <ColorAnimationUsingKeyFrames Storyboard.TargetName="NormalText" 
                                                                          Storyboard.TargetProperty="(TextElement.Foreground).(SolidColorBrush.Color)">
                                            <EasingColorKeyFrame KeyTime="0" Value="DynamicResource PrimaryNormalColor" >
                                            </EasingColorKeyFrame>
                                        </ColorAnimationUsingKeyFrames>
                                    </Storyboard>
                                </VisualState>
                                <VisualState Name="CalendarButtonUnfocused" />
                            </VisualStateGroup>
                        </VisualStateManager.VisualStateGroups>
                        
                        <ContentPresenter x:Name="NormalText"
                            HorizontalAlignment="TemplateBinding HorizontalContentAlignment"
                            VerticalAlignment="TemplateBinding VerticalContentAlignment"
                            Margin="3,20">
                            <TextElement.Foreground>
                                <SolidColorBrush Color="DynamicResource RegularTextColor" />
                            </TextElement.Foreground>
                        </ContentPresenter>
                    </Grid>
                    <ControlTemplate.Triggers>
                        <Trigger Property="IsInactive" Value="True">
                            <Setter TargetName="NormalText" Property="TextElement.Foreground" Value="DynamicResource BaseSolidColorBrush"/>
                        </Trigger>
                    </ControlTemplate.Triggers>
                </ControlTemplate>
            </Setter.Value>
        </Setter>
        
    </Style>

    <ControlTemplate x:Key="PreviousButtonTemplate" TargetType="x:Type Button">
        <Grid Cursor="Hand">
            <VisualStateManager.VisualStateGroups>
                <VisualStateGroup x:Name="CommonStates">
                    <VisualState x:Name="Normal" />
                    <VisualState x:Name="MouseOver">
                        <Storyboard>
                            <ColorAnimation Duration="0"
                            Storyboard.TargetName="PART_Path"
                            Storyboard.TargetProperty="(Shape.Fill).(SolidColorBrush.Color)"
                            To="DynamicResource PrimaryMouseOverColor" />
                        </Storyboard>
                    </VisualState>
                    <VisualState x:Name="Disabled">
                        <Storyboard>
                            <DoubleAnimation Duration="0"
                                             To=".5"
                                             Storyboard.TargetProperty="(Shape.Fill).(Brush.Opacity)"
                                             Storyboard.TargetName="PART_Path" />
                        </Storyboard>
                    </VisualState>
                </VisualStateGroup>
            </VisualStateManager.VisualStateGroups>
            <Grid  Background="Transparent">
                <Path x:Name="PART_Path"
            Margin="14,-6,0,0"
            Stretch="Fill"
            HorizontalAlignment="Left"
            Height="10"
            VerticalAlignment="Center"
            Width="6"
            Data="StaticResource PathPrevious">
                    <Path.Fill>
                        <SolidColorBrush Color="DynamicResource RegularTextColor" />
                    </Path.Fill>
                </Path>
            </Grid>
        </Grid>
    </ControlTemplate>

    
    <ControlTemplate x:Key="NextButtonTemplate" TargetType="x:Type Button">
        <Grid Cursor="Hand">
            <VisualStateManager.VisualStateGroups>
                <VisualStateGroup x:Name="CommonStates">
                    <VisualState x:Name="Normal" />
                    <VisualState x:Name="MouseOver">
                        <Storyboard>
                            <ColorAnimation Duration="0"
                            To="StaticResource PrimaryMouseOverColor"
                            Storyboard.TargetProperty="(Shape.Fill).(SolidColorBrush.Color)"
                            Storyboard.TargetName="PART_Path" />
                        </Storyboard>
                    </VisualState>
                    <VisualState x:Name="Disabled">
                        <Storyboard>
                            <DoubleAnimation Duration="0"
                             To=".5"
                             Storyboard.TargetProperty="(Shape.Fill).(Brush.Opacity)"
                             Storyboard.TargetName="PART_Path" />
                        </Storyboard>
                    </VisualState>
                </VisualStateGroup>
            </VisualStateManager.VisualStateGroups>
            <Grid Background="Transparent">
                <Path x:Name="PART_Path" Data="StaticResource PathNext" 
                      HorizontalAlignment="Right" Height="10" Margin="0,-6,14,0"
                      Stretch="Fill" VerticalAlignment="Center" Width="6">
                    <Path.Fill>
                        <SolidColorBrush Color="DynamicResource RegularTextColor" />
                    </Path.Fill>
                </Path>
            </Grid>
        </Grid>
    </ControlTemplate>

    <ControlTemplate x:Key="HeaderButtonTemplate"
                 TargetType="x:Type Button">
        <Grid Cursor="Hand">
            <VisualStateManager.VisualStateGroups>
                <VisualStateGroup x:Name="CommonStates">
                    <VisualState x:Name="Normal" />
                    <VisualState x:Name="MouseOver"/>
                    <VisualState x:Name="Disabled">
                        <Storyboard>
                            <DoubleAnimation Duration="0"
                             To=".5"
                             Storyboard.TargetProperty="Opacity"
                             Storyboard.TargetName="PART_ButtonContent" />
                        </Storyboard>
                    </VisualState>
                </VisualStateGroup>
            </VisualStateManager.VisualStateGroups>
            <ContentPresenter x:Name="PART_ButtonContent"
                      Margin="1,4,1,9"
                      ContentTemplate="TemplateBinding ContentTemplate"
                      Content="TemplateBinding Content"
                      TextElement.Foreground="#FF333333"
                      HorizontalAlignment="TemplateBinding HorizontalContentAlignment"
                      VerticalAlignment="TemplateBinding VerticalContentAlignment" />
        </Grid>
    </ControlTemplate>

    <Style x:Key="CalendarItemStyle" TargetType="x:Type CalendarItem" BasedOn="StaticResource ControlBasicStyle">
        <Setter Property="Margin"
          Value="24,4,24,24" />
        <Setter Property="Template">
            <Setter.Value>
                <ControlTemplate TargetType="x:Type CalendarItem">
                    <ControlTemplate.Resources>
                        <DataTemplate x:Key="x:Static CalendarItem.DayTitleTemplateResourceKey">
                            <StackPanel>
                                <TextBlock Foreground="DynamicResource PrimaryTextSolidColorBrush"
                       FontSize="12"
                       Margin="0,6"
                       Text="Binding"
                       HorizontalAlignment="Center"
                       VerticalAlignment="Center" />
                                <Rectangle Fill="DynamicResource BaseSolidColorBrush" Height="1"
                                               VerticalAlignment="Bottom"/>
                            </StackPanel>
                        </DataTemplate>
                    </ControlTemplate.Resources>
                    <Grid x:Name="PART_Root" Margin="TemplateBinding Margin">
                        <VisualStateManager.VisualStateGroups>
                            <VisualStateGroup x:Name="CommonStates">
                                <VisualState x:Name="Normal" />
                                <VisualState x:Name="Disabled">
                                    <Storyboard>
                                        <DoubleAnimation Duration="0" 
                                                         To="1"
                                                         Storyboard.TargetProperty="Opacity"
                                                         Storyboard.TargetName="PART_DisabledVisual" />
                                    </Storyboard>
                                </VisualState>
                            </VisualStateGroup>
                        </VisualStateManager.VisualStateGroups>
                        <Border Background="DynamicResource WhiteSolidColorBrush" 
                                    BorderBrush="DynamicResource BaseSolidColorBrush"
                                    BorderThickness="1"
                                    CornerRadius="3" SnapsToDevicePixels="True" UseLayoutRounding="True">
                            <Border.Effect>
                                <DropShadowEffect BlurRadius="12" Opacity="0.1" ShadowDepth="2" Color="Black" />
                            </Border.Effect>
                            <Grid Margin="0,20,0,0">
                                <Grid.ColumnDefinitions>
                                    <ColumnDefinition Width="Auto" />
                                    <ColumnDefinition Width="Auto" />
                                    <ColumnDefinition Width="Auto" />
                                </Grid.ColumnDefinitions>
                                <Grid.RowDefinitions>
                                    <RowDefinition Height="Auto"/>
                                    <RowDefinition Height="*" />
                                </Grid.RowDefinitions>
                                <Button x:Name="PART_PreviousButton"
                        Template="StaticResource PreviousButtonTemplate"
                        Focusable="False"
                        HorizontalAlignment="Left"
                        Grid.Column="0"
                        Grid.Row="0"
                        Height="20"
                        Width="28" />
                                <Button x:Name="PART_HeaderButton"
                        Focusable="False"
                        FontSize="14"
                        HorizontalAlignment="Center"
                        VerticalAlignment="Center"
                        Grid.Column="1"
                        Grid.Row="0"
                        Template="StaticResource HeaderButtonTemplate" />
                                <Button x:Name="PART_NextButton"
                        Focusable="False"
                        HorizontalAlignment="Right"
                        Grid.Column="2"
                        Grid.Row="0"
                        Template="StaticResource NextButtonTemplate"
                        Height="20"
                        Width="28" />
                               
                                <Grid x:Name="PART_MonthView"
                      Visibility="Visible"
                      Grid.ColumnSpan="3"
                      Grid.Row="1"
                      Margin="6,10"
                                              VerticalAlignment="Center"
                      HorizontalAlignment="Center">
                                    <Grid.ColumnDefinitions>
                                        <ColumnDefinition Width="Auto" />
                                        <ColumnDefinition Width="Auto" />
                                        <ColumnDefinition Width="Auto" />
                                        <ColumnDefinition Width="Auto" />
                                        <ColumnDefinition Width="Auto" />
                                        <ColumnDefinition Width="Auto" />
                                        <ColumnDefinition Width="Auto" />
                                    </Grid.ColumnDefinitions>
                                    <Grid.RowDefinitions>
                                        <RowDefinition Height="Auto" />
                                        <RowDefinition Height="Auto" />
                                        <RowDefinition Height="Auto" />
                                        <RowDefinition Height="Auto" />
                                        <RowDefinition Height="Auto" />
                                        <RowDefinition Height="Auto" />
                                        <RowDefinition Height="Auto" />
                                    </Grid.RowDefinitions>
                                </Grid>
                                <Grid x:Name="PART_YearView"
                      Visibility="Hidden"
                      Grid.ColumnSpan="3"
                      Grid.Row="1"
                                               VerticalAlignment="Center"
                      HorizontalAlignment="Center"
                      Margin="6,-3,7,6">
                                    <Grid.ColumnDefinitions>
                                        <ColumnDefinition Width="Auto" />
                                        <ColumnDefinition Width="Auto" />
                                        <ColumnDefinition Width="Auto" />
                                        <ColumnDefinition Width="Auto" />
                                    </Grid.ColumnDefinitions>
                                    <Grid.RowDefinitions>
                                        <RowDefinition Height="Auto" />
                                        <RowDefinition Height="Auto" />
                                        <RowDefinition Height="Auto" />
                                    </Grid.RowDefinitions>
                                </Grid>
                            </Grid>
                        </Border>

                    </Grid>
                    <ControlTemplate.Triggers>
                        <DataTrigger Binding="Binding DisplayMode, 
              RelativeSource=RelativeSource FindAncestor, 
              AncestorType=x:Type Calendar"
                       Value="Year">
                            <Setter Property="Visibility"
                    TargetName="PART_MonthView"
                    Value="Collapsed" />
                            <Setter Property="Visibility"
                    TargetName="PART_YearView"
                    Value="Visible" />
                        </DataTrigger>
                        <DataTrigger Binding="Binding DisplayMode, 
              RelativeSource=RelativeSource FindAncestor, 
              AncestorType=x:Type Calendar"
                       Value="Decade">
                            <Setter Property="Visibility"
                    TargetName="PART_MonthView"
                    Value="Collapsed" />
                            <Setter Property="Visibility"
                    TargetName="PART_YearView"
                    Value="Visible" />
                        </DataTrigger>
                    </ControlTemplate.Triggers>
                </ControlTemplate>
            </Setter.Value>
        </Setter>
    </Style>

    <Style TargetType="x:Type Calendar" BasedOn="StaticResource ControlBasicStyle">
        <Setter Property="CalendarButtonStyle"
          Value="StaticResource CalendarButtonStyle" />
        <Setter Property="CalendarDayButtonStyle"
          Value="StaticResource CalendarDayButtonStyle" />
        <Setter Property="CalendarItemStyle"
          Value="StaticResource CalendarItemStyle" />
        <Setter Property="Foreground"
          Value="DynamicResource PrimaryTextSolidColorBrush" />
        <Setter Property="Background" Value="DynamicResource WhiteSolidColorBrush"/>
        <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" />
                    </StackPanel>

                </ControlTemplate>
            </Setter.Value>
        </Setter>
    </Style>

  
    <Style x:Key="DatePickerCalendarStyle"
       TargetType="x:Type Calendar"
       BasedOn="StaticResource x:Type Calendar" />

  
    <Style x:Key="DropDownButtonStyle" TargetType="Button" BasedOn="StaticResource ControlBasicStyle">
        <Setter Property="Template">
            <Setter.Value>
                <ControlTemplate TargetType="x:Type Button">
                    <Grid>
                        <Grid.ColumnDefinitions>
                            <ColumnDefinition Width="30" />
                            <ColumnDefinition />
                        </Grid.ColumnDefinitions>
                        <Border x:Name="Border" 
                        Grid.ColumnSpan="2" 
                        BorderThickness="1" 
                        Background="DynamicResource WhiteSolidColorBrush" >
                        </Border>
                        <Grid FlowDirection="LeftToRight"
                              HorizontalAlignment="Center" Height="18"  
                              VerticalAlignment="Center" Width="19">
                            <Grid.ColumnDefinitions>
                                <ColumnDefinition Width="20*" />
                                <ColumnDefinition Width="20*" />
                                <ColumnDefinition Width="20*" />
                                <ColumnDefinition Width="20*" />
                            </Grid.ColumnDefinitions>
                            <Grid.RowDefinitions>
                                <RowDefinition Height="23*" />
                                <RowDefinition Height="19*" />
                                <RowDefinition Height="19*" />
                                <RowDefinition Height="19*" />
                            </Grid.RowDefinitions>
                            <Border x:Name="Highlight"
                                    BorderThickness="1"
                                    Grid.ColumnSpan="4"
                                    CornerRadius="0,0,1,1"
                                    Margin="-1"
                                    Opacity="1"
                                    Grid.Row="0"
                                    BorderBrush="DynamicResource RegularTextSolidColorBrush"
                                    Grid.RowSpan="4">
                            </Border>
                            <Border x:Name="Background"
                                    BorderBrush="DynamicResource RegularTextSolidColorBrush"
                                    BorderThickness="1"
                                    Grid.ColumnSpan="4"
                                    CornerRadius=".5"
                                    Margin="0,-1,0,0"
                                    Opacity="1"
                                    Grid.Row="1"
                                    Grid.RowSpan="3"
                                    Background="DynamicResource WhiteSolidColorBrush">
                            </Border>
                            <Border x:Name="BackgroundGradient"
                                    BorderBrush="DynamicResource RegularTextSolidColorBrush"
                                    BorderThickness="1"
                                    Grid.ColumnSpan="4"
                                    CornerRadius=".5"
                                    Margin="0,-1,0,0"
                                    Opacity="1"
                                    Grid.Row="1"
                                    Grid.RowSpan="3"
                                    Background="DynamicResource WhiteSolidColorBrush">
                                
                            </Border>
                            <Rectangle Grid.ColumnSpan="4" 
                                       Grid.RowSpan="1" StrokeThickness="1"
                                       Fill="DynamicResource RegularTextSolidColorBrush"
                                       Stroke="DynamicResource RegularTextSolidColorBrush">
                            </Rectangle>
                            <Path Fill="DynamicResource RegularTextSolidColorBrush" Grid.Row="1"
                                  Grid.Column="0"
                                  Grid.RowSpan="3"
                                  Grid.ColumnSpan="4"
                                  HorizontalAlignment="Center"
                                  VerticalAlignment="Center"
                                  RenderTransformOrigin="0.5,0.5"
                                  Margin="4,3,4,3"
                                  Stretch="Fill"
                                  Data="StaticResource PathDatePickerDropDown" />
                            <Ellipse Grid.ColumnSpan="4"
                     Fill="DynamicResource WhiteSolidColorBrush"
                     HorizontalAlignment="Center"
                     Height="3"
                     StrokeThickness="0"
                     VerticalAlignment="Center"
                     Width="3" />
                            <Border x:Name="DisabledVisual"
                    BorderBrush="DynamicResource WhiteSolidColorBrush"
                    BorderThickness="1"
                    Grid.ColumnSpan="4"
                    CornerRadius="0,0,.5,.5"
                    Opacity="0"
                    Grid.Row="0"
                    Grid.RowSpan="4" />
                        </Grid>
                    </Grid>
                </ControlTemplate>
            </Setter.Value>
        </Setter>
    </Style>

    <Style TargetType="x:Type DatePickerTextBox" BasedOn="StaticResource ControlBasicStyle">
        <Setter Property="Foreground" Value="DynamicResource x:Static SystemColors.WindowTextBrushKey" />
        <Setter Property="Background" Value="DynamicResource x:Static SystemColors.WindowBrushKey" />
        <Setter Property="ScrollViewer.PanningMode" Value="VerticalFirst"/>
        <!--<Setter Property="SelectionBrush" Value="DynamicResource PrimaryNormalSolidColorBrush"/>-->
        <Setter Property="Stylus.IsFlicksEnabled" Value="False"/>
        <Setter Property="Template">
            <Setter.Value>
                <ControlTemplate TargetType="DatePickerTextBox">
                    <Grid>
                        <Border x:Name="Border" 
                            Background="TemplateBinding Background" 
                            BorderBrush="TemplateBinding BorderBrush" 
                            BorderThickness="TemplateBinding BorderThickness"
                            Padding="TemplateBinding Padding"
                            CornerRadius="1" 
                            Opacity="1">
                            <Grid x:Name="WatermarkContent"
                              HorizontalAlignment="TemplateBinding HorizontalContentAlignment"
                              VerticalAlignment="TemplateBinding VerticalContentAlignment">
                                <Border x:Name="ContentElement" BorderThickness="1">
                                    <Border.BorderBrush>
                                        <SolidColorBrush Color="DynamicResource WhiteColor"/>
                                    </Border.BorderBrush>
                                </Border>
                                <ScrollViewer x:Name="PART_ContentHost" 
                                          Margin="0"
                                          HorizontalContentAlignment="TemplateBinding HorizontalContentAlignment"
                                          VerticalContentAlignment="TemplateBinding VerticalContentAlignment" />
                                <!--<Border x:Name="FocusVisual" BorderBrush="#FF45D6FA" CornerRadius="1" Opacity="0" IsHitTestVisible="False"/>-->
                            </Grid>
                        </Border>
                    </Grid>
                </ControlTemplate>
            </Setter.Value>
        </Setter>
    </Style>




    <Style TargetType="x:Type DatePicker" BasedOn="StaticResource ControlBasicStyle">
        <Setter Property="IsTodayHighlighted"
          Value="True" />
        <Setter Property="SelectedDateFormat"
          Value="Short" />
        <Setter Property="Padding"
          Value="2" />
        <Setter Property="BorderThickness"
          Value="1" />
        <Setter Property="HorizontalContentAlignment"
          Value="Left" />
        <Setter Property="VerticalContentAlignment"
          Value="Center" />
        <Setter Property="MinWidth" Value="140"/>
        <Setter Property="MinHeight" Value="StaticResource MinHeight" />
        <Setter Property="Cursor" Value="Hand"/>
        <Setter Property="CalendarStyle"
          Value="DynamicResource DatePickerCalendarStyle" />
        <Setter Property="Template">
            <Setter.Value>
                <ControlTemplate TargetType="x:Type DatePicker">
                    <Border BorderThickness="TemplateBinding BorderThickness"
                Padding="TemplateBinding Padding" 
                            CornerRadius="Binding Path=(wpfs:ElementHelper.CornerRadius),RelativeSource=RelativeSource TemplatedParent"
                                x:Name="PART_Border"
                                BorderBrush="StaticResource BaseSolidColorBrush"
                                Background="StaticResource WhiteSolidColorBrush">

                        <Grid x:Name="PART_Root"
                HorizontalAlignment="Stretch"
                VerticalAlignment="TemplateBinding VerticalContentAlignment">

                            <Button x:Name="PART_Button"
                    Foreground="TemplateBinding Foreground"
                    Focusable="False"
                    Margin="3,0,3,0"
                    Style="StaticResource DropDownButtonStyle"
                    VerticalAlignment="Top" />
                            
                            <DatePickerTextBox x:Name="PART_TextBox"
                               Grid.Column="1"
                               Foreground="TemplateBinding Foreground"
                               Focusable="True"
                              Width="Auto" 
                              HorizontalAlignment="Left"
                              VerticalAlignment="Bottom"
                               Margin="34,2,2,2"
                               Background="Transparent" />
                            <Popup x:Name="PART_Popup" 
                         

以上是关于WPF 基础控件之 DatePicker 样式的主要内容,如果未能解决你的问题,请参考以下文章

WPF 基础控件之 ToggleButton 样式

WPF 基础控件之 Slider 样式

WPF 基础控件之 GroupBox样式

WPF 基础控件之 RadioButton 样式

WPF 基础控件之 DataGrid 样式

WPF 基础控件之CheckBox样式