ControlTemplate in WPF —— DatePicker

这篇博客详细介绍了WPF中DatePicker的ControlTemplate,包括如何定义日历样式、按钮模板,以及不同状态(如正常、鼠标悬停、按下)下的视觉效果。内容涉及样式设置、动画、视觉状态管理,为自定义DatePicker的外观提供了指导。
摘要由CSDN通过智能技术生成
<ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
                    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">

  <!--In this example, an implecit style for Calendar is defined elsewhere 
    in the application.  DatePickerCalendarStyle is based on the implicit 
    style so that the DatePicker will use the application's calendar style.-->
  <Style x:Key="DatePickerCalendarStyle"
         TargetType="{x:Type Calendar}"
         BasedOn="{StaticResource {x:Type Calendar}}" />

  <!--The template for the button that displays the calendar.-->
  <Style x:Key="DropDownButtonStyle"
         TargetType="Button">
    <Setter Property="Template">
      <Setter.Value>
        <ControlTemplate TargetType="{x:Type Button}">
          <Grid>
            <VisualStateManager.VisualStateGroups>
              <VisualStateGroup x:Name="CommonStates">
                <VisualStateGroup.Transitions>
                  <VisualTransition GeneratedDuration="0" />
                  <VisualTransition GeneratedDuration="0:0:0.1"
                                    To="MouseOver" />
                  <VisualTransition GeneratedDuration="0:0:0.1"
                                    To="Pressed" />
                </VisualStateGroup.Transitions>
                <VisualState x:Name="Normal" />
                <VisualState x:Name="MouseOver">
                  <Storyboard>
                    <ColorAnimationUsingKeyFrames BeginTime="0"
                                                  Duration="00:00:00.001"
                                                  Storyboard.TargetName="BackgroundGradient"
                                                  Storyboard.TargetProperty="(Border.Background).
                      (GradientBrush.GradientStops)[1].(GradientStop.Color)">
                      <SplineColorKeyFrame KeyTime="0"
                                           Value="#F2FFFFFF" />
                    </ColorAnimationUsingKeyFrames>
                    <ColorAnimationUsingKeyFrames BeginTime="0"
                                                  Duration="00:00:00.001"
                                                  Storyboard.TargetName="BackgroundGradient"
                                                  Storyboard.TargetProperty="(Border.Background).
                      (GradientBrush.GradientStops)[2].(GradientStop.Color)">
                      <SplineColorKeyFrame KeyTime="0"
                                           Value="#CCFFFFFF" />
                    </ColorAnimationUsingKeyFrames>
                    <ColorAnimation Duration="0"
                                    To="#FF448DCA"
                                    Storyboard.TargetProperty="(Border.Background).
                              (SolidColorBrush.Color)"
                                    Storyboard.TargetName="Background" />
                    <ColorAnimationUsingKeyFrames BeginTime="0"
                                                  Duration="00:00:00.001"
                                                  Storyboard.TargetName="BackgroundGradient"
                                                  Storyboard.TargetProperty="(Border.Background).
                      (GradientBrush.GradientStops)[3].(GradientStop.Color)">
                      <SplineColorKeyFrame KeyTime="0"
                                           Value="#7FFFFFFF" />
                    </ColorAnimationUsingKeyFrames>
                  </Storyboard>
                </VisualState>
                <VisualState x:Name="Pressed">
                  <Storyboard>
                    <ColorAnimationUsingKeyFrames BeginTime="0"
                                                  Duration="00:00:00.001"
                                                  Storyboard.TargetN
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值