[转]WPF自定义控件之带倒计时的按钮--Button
| 1.说明 |
之前做过一个小项目,点击按钮,按钮进入倒计时无效状态,计时完成后,恢复原样,现在就实现该效果---带倒计时的按钮
| 2.效果 |
1)正常状态
2)MouseOver(只有背景色变化)
3)点击进入无效状态
4)在无效状态下计时
5)恢复正常状态
| 3.XAML代码 |

1 <!--冷却计时按钮样式-->
<!--通过修改颜色值参数,以更改按钮颜色样式,更多修改,还请自行DIY-->
<SolidColorBrush x:Key="ButtonForeground" Color="#FFF9FBFD"/>
<SolidColorBrush x:Key="RactangleFill" Color="#FF6EB3F7"/>
<SolidColorBrush x:Key="MouseOverFill" Color="#FF8CC3F9"/>
<SolidColorBrush x:Key="PressedFill" Color="#888CC3F9"/>
<SolidColorBrush x:Key="EnabledFill" Color="#FF6EB3F7"/>
<SolidColorBrush x:Key="EnabledOpacityMask" Color="#99FFFFFF"/> <!--总样式--> 2 <Style x:Key="TimerBtnStyle" TargetType="{x:Type Button}">
<Setter Property="FontSize" Value="14"/>
73 <Setter Property="Foreground" Value="{StaticResource ButtonForeground}"/>
3 <Setter Property="MinHeight" Value="25"/>
4 <Setter Property="Template">
5 <Setter.Value>
6 <ControlTemplate TargetType="{x:Type Button}">
7 <Grid>
8 <Rectangle x:Name="rectangle" Margin="0" StrokeThickness="0" Fill="{StaticResource RectangleFill}"/>
9 <ContentPresenter x:Name="contentPresenter" HorizontalAlignment="Center" Margin="0" RecognizesAccessKey="True" SnapsToDevicePixels="{TemplateBinding SnapsToDevicePixels}" VerticalAlignment="Center"/>
10 </Grid>
11 <ControlTemplate.Triggers>
12 <EventTrigger RoutedEvent="Button.Click">
13 <BeginStoryboard>
14 <Storyboard FillBehavior="Stop">
15 <StringAnimationUsingKeyFrames Storyboard.TargetProperty="(ContentPresenter.Content)" Storyboard.TargetName="contentPresenter">
16 <DiscreteStringKeyFrame KeyTime="0" Value="已提交"/>
17 <DiscreteStringKeyFrame KeyTime="0:0:1" Value="等待(30)"/>
18 <DiscreteStringKeyFrame KeyTime="0:0:2" Value="等待(29)"/>
19 <DiscreteStringKeyFrame KeyTime="0:0:3" Value="等待(28)"/>
20 <DiscreteStringKeyFrame KeyTime="0:0:4" Value="等待(27)"/>
21 <DiscreteStringKeyFrame KeyTime="0:0:5" Value="等待(26)"/>
22 <DiscreteStringKeyFrame KeyTime="0:0:6" Value="等待(25)"/>
23 <DiscreteStringKeyFrame KeyTime="0:0:7" Value="等待(24)"/>
24 <DiscreteStringKeyFrame KeyTime="0:0:8" Value="等待(23)"/>
25 <DiscreteStringKeyFrame KeyTime="0:0:9" Value="等待(22)"/>
26 <DiscreteStringKeyFrame KeyTime="0:0:10" Value="等待(21)"/>
27 <DiscreteStringKeyFrame KeyTime="0:0:11" Value="等待(20)"/>
28 <DiscreteStringKeyFrame KeyTime="0:0:12" Value="等待(19)"/>
29 <DiscreteStringKeyFrame KeyTime="0:0:13" Value="等待(18)"/>
30 <DiscreteStringKeyFrame KeyTime="0:0:14" Value="等待(17)"/>
31 <DiscreteStringKeyFrame KeyTime="0:0:15" Value="等待(16)"/>
32 <DiscreteStringKeyFrame KeyTime="0:0:16" Value="等待(15)"/>
33 <DiscreteStringKeyFrame KeyTime="0:0:17" Value="等待(14)"/>
34 <DiscreteStringKeyFrame KeyTime="0:0:18" Value="等待(13)"/>
35 <DiscreteStringKeyFrame KeyTime="0:0:19" Value="等待(12)"/>
36 <DiscreteStringKeyFrame KeyTime="0:0:20" Value="等待(11)"/>
37 <DiscreteStringKeyFrame KeyTime="0:0:21" Value="等待(10)"/>
38 <DiscreteStringKeyFrame KeyTime="0:0:22" Value="等待(09)"/>
39 <DiscreteStringKeyFrame KeyTime="0:0:23" Value="等待(08)"/>
40 <DiscreteStringKeyFrame KeyTime="0:0:24" Value="等待(07)"/>
41 <DiscreteStringKeyFrame KeyTime="0:0:25" Value="等待(06)"/>
42 <DiscreteStringKeyFrame KeyTime="0:0:26" Value="等待(05)"/>
43 <DiscreteStringKeyFrame KeyTime="0:0:27" Value="等待(04)"/>
44 <DiscreteStringKeyFrame KeyTime="0:0:28" Value="等待(03)"/>
45 <DiscreteStringKeyFrame KeyTime="0:0:29" Value="等待(02)"/>
46 <DiscreteStringKeyFrame KeyTime="0:0:30" Value="等待(01)"/>
47 <DiscreteStringKeyFrame KeyTime="0:0:31" Value="等待(00)"/>
48 </StringAnimationUsingKeyFrames>
49 <BooleanAnimationUsingKeyFrames Storyboard.TargetProperty="(Button.IsEnabled)">
50 <DiscreteBooleanKeyFrame KeyTime="0" Value="False"/>
51 <DiscreteBooleanKeyFrame KeyTime="0:0:32" Value="True"/>
52 </BooleanAnimationUsingKeyFrames>
53 </Storyboard>
54 </BeginStoryboard>
55 </EventTrigger>
56 <Trigger Property="IsFocused" Value="True"/>
57 <Trigger Property="IsDefaulted" Value="True"/>
58 <Trigger Property="IsMouseOver" Value="True">
59 <Setter Property="Fill" TargetName="rectangle" Value="{StaticResource MouseOverFill}"/>
60 </Trigger>
61 <Trigger Property="IsPressed" Value="True">
62 <Setter Property="Fill" TargetName="rectangle" Value="{StaticResource PressedFill}"/>
63 </Trigger>
64 <Trigger Property="IsEnabled" Value="False">
65 <Setter Property="Fill" TargetName="rectangle" Value="{StaticResource EnabledFill}"/>
66 <Setter Property="OpacityMask" TargetName="contentPresenter" Value="{StaticResource EnabledOpacityMask}"/>
67 </Trigger>
68 </ControlTemplate.Triggers>
69 </ControlTemplate>
70 </Setter.Value>
71 </Setter>
72 </Style>

| 4.应用 |
1 <Button Width="65" Content="提交请求" FontSize="14" Style="{StaticResource TimerBtnStyle}" />
| 5.总结 |
通过此代码,希望给初学者一些启示,有更多想法的同学,多多批评,不吝赐教。
文章来源:http://www.cnblogs.com/smlusm/p/3234463.html
[转]WPF自定义控件之带倒计时的按钮--Button的更多相关文章
- WPF自定义控件之带倒计时的按钮--Button
1.说明 之前做过一个小项目,点击按钮,按钮进入倒计时无效状态,计时完成后,恢复原样,现在就实现该效果---带倒计时的按钮 2.效果 1)正常状态 2)MouseOver( ...
- WPF自定义控件与样式(2)-自定义按钮FButton
一.前言.效果图 申明:WPF自定义控件与样式是一个系列文章,前后是有些关联的,但大多是按照由简到繁的顺序逐步发布的等,若有不明白的地方可以参考本系列前面的文章,文末附有部分文章链接. 还是先看看效果 ...
- 【转】WPF自定义控件与样式(2)-自定义按钮FButton
一.前言.效果图 申明:WPF自定义控件与样式是一个系列文章,前后是有些关联的,但大多是按照由简到繁的顺序逐步发布的等 还是先看看效果图吧: 定义Button按钮名称叫FButton,主要是集成了 ...
- WPF自定义控件与样式(12)-缩略图ThumbnailImage /gif动画图/图片列表
一.前言 申明:WPF自定义控件与样式是一个系列文章,前后是有些关联的,但大多是按照由简到繁的顺序逐步发布的等,若有不明白的地方可以参考本系列前面的文章,文末附有部分文章链接. 本文主要针对WPF项目 ...
- WPF自定义控件与样式(14)-轻量MVVM模式实践
一.前言 申明:WPF自定义控件与样式是一个系列文章,前后是有些关联的,但大多是按照由简到繁的顺序逐步发布的,若有不明白的地方可以参考本系列前面的文章,文末附有部分文章链接. MVVM是WPF中一个非 ...
- WPF自定义控件与样式(3)-TextBox & RichTextBox & PasswordBox样式、水印、Label标签、功能扩展
一.前言.预览 申明:WPF自定义控件与样式是一个系列文章,前后是有些关联的,但大多是按照由简到繁的顺序逐步发布的等,若有不明白的地方可以参考本系列前面的文章,文末附有部分文章链接. 本文主要是对文本 ...
- WPF自定义控件与样式(1)-矢量字体图标(iconfont)
一.图标字体 图标字体在网页开发上运用非常广泛,具体可以网络搜索了解,网页上的运用有很多例子,如Bootstrap.但在C/S程序中使用还不多,字体图标其实就是把矢量图形打包到字体文件里,就像使用一般 ...
- WPF自定义控件与样式(15)-终结篇 & 系列文章索引 & 源码共享
系列文章目录 WPF自定义控件与样式(1)-矢量字体图标(iconfont) WPF自定义控件与样式(2)-自定义按钮FButton WPF自定义控件与样式(3)-TextBox & Ric ...
- WPF自定义控件与样式(4)-CheckBox/RadioButton自定义样式
一.前言 申明:WPF自定义控件与样式是一个系列文章,前后是有些关联的,但大多是按照由简到繁的顺序逐步发布的等,若有不明白的地方可以参考本系列前面的文章,文末附有部分文章链接. 本文主要内容: Che ...
随机推荐
- Maven - Scope区别
依赖的Scope scope定义了类包在项目的使用阶段.项目阶段包括: 编译,运行,测试和发布. 分类说明 compile 默认scope为compile,表示为当前依赖参与项目的编译.测试和运行阶段 ...
- 8-5接口测试用例设计与编写2 rest-assured
rest-assured 简约的接口测试DSL 支持xml json的结构化解析 支持xpath jsonpath gpath等多种解析方式 对Spring的支持比较前面 底层是httpclient ...
- CSS W3C统一验证工具
CssStats 是一个在线的 CSS 代码分析工具 网址是: http://www.cssstats.com/ 如果你想要更全面的,这个神奇,你值得拥有: W3C 统一验证工具: http://v ...
- MyEclipse搭建Structs2开发环境
MyEclipse10搭建Strust2开发环境 - 孤傲苍狼 - 博客园https://www.cnblogs.com/xdp-gacl/p/3496242.html
- html5 js 监听网络在线与离线
<!doctype html> <html> <head> <meta http-equiv="content-type" content ...
- .NETFramework-Web.Mvc:HttpXxxAttribute-目录
ylbtech-.NETFramework-Web.Mvc:HttpXxxAttribute-目录 1.返回顶部 2.返回顶部 3.返回顶部 4.返回顶部 5.返回顶部 6.返 ...
- CSS 常用的兼容性调试技巧
1.实现所有浏览器主页居中 Firefox下主页居中代码:.box{margin:0px auto} IE5.5下主页居中代码:body{text-align:center;} 将以上两种代码,合在一 ...
- day24 面向对象设计part1
#!/usr/bin/env python # -*- coding:utf-8 -*- # ----------------------------------------------------- ...
- hive 总结一
本文参考:黑泽君相关博客 本文是我总结日常工作中遇到的坑,结合黑泽君相关博客,选取.补充了部分内容. 上传数据 上传数据后执行修复 msck 命令 上传数据 hive> dfs -mkdir - ...
- Ubuntu 上如何安装Docker
Docker 是一个开源项目,为开发者和系统管理员提供了一个开放的平台,在任何地方通过打包和运行应用程序作为一个轻量级的容器.Docker 在软件容器内自动部署应用程序.Docker 最开始由 Sol ...