WPF自定义控件之带倒计时的按钮--Button

2021-01-19 19:14

阅读:424

标签:table   ica   border   toolbar   ble   定义   info   round   test   

原文:WPF自定义控件之带倒计时的按钮--Button

1.说明

 

 

之前做过一个小项目,点击按钮,按钮进入倒计时无效状态,计时完成后,恢复原样,现在就实现该效果---带倒计时的按钮

 

2.效果

 

 

1)正常状态技术图片               2)MouseOver(只有背景色变化)技术图片         3)点击进入无效状态技术图片         

4)在无效状态下计时技术图片              5)恢复正常状态技术图片

3.XAML代码

 

 

技术图片
 1 
       
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.总结

 

 

通过此代码,希望给初学者一些启示,有更多想法的同学,多多批评,不吝赐教。

WPF自定义控件之带倒计时的按钮--Button

标签:table   ica   border   toolbar   ble   定义   info   round   test   

原文地址:https://www.cnblogs.com/lonelyxmas/p/12154027.html


评论


亲,登录后才可以留言!