WPF custom control with the countdown button --Button

Original: with WPF custom control of the countdown button --Button

1. Description

 

 

Done before a small item, click the button, the button countdown inactive state, the timing is complete, restored to their original, now realize the effect --- with a countdown button

 

2. Effect

 

 

1) normal state                2) MouseOver (only background color change)          3 ) Click to enter an invalid state         

4) Timing in an invalid state               5) return to normal state

3.XAML Code

 

 

Copy the code
1  <! - cooling time button style -> 
       <! - by modifying the color values of the parameters to change the button color style, more modifications, please own DIY ->
< a SolidColorBrush X: Key = "ButtonForeground" Color = "# FFF9FBFD " />
< a SolidColorBrush X: Key = "RactangleFill" Color = "# FF6EB3F7 " />

< a SolidColorBrush X: Key = "MouseOverFill" Color = "# FF8CC3F9 " />
< a 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"<30/>= "wait (18)"The Value 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"> Sets<59 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> Setter</71 > 72 </Style>
Copy the code

 

4. Applications

 

 

1 <Button Width="65" Content="提交请求" FontSize="14" Style="{StaticResource TimerBtnStyle}" />

 

5. Summary

 

 

With this code, I hope some inspiration for beginners, students have more ideas, a lot of criticism, let me know.

Guess you like

Origin www.cnblogs.com/lonelyxmas/p/12154027.html