I have a button with my own style:
<ControlTemplate x:Key="Button_Standard" TargetType="{x:Type Button}"> <ControlTemplate.Resources> <Storyboard x:Key="Mouse_Enter"> <ColorAnimationUsingKeyFrames Storyboard.TargetProperty="(Panel.Background).(GradientBrush.GradientStops)[0].(GradientStop.Color)" Storyboard.TargetName="border"> <EasingColorKeyFrame KeyTime="0:0:0.2" Value="#FF2CA58D"/> </ColorAnimationUsingKeyFrames> <ColorAnimationUsingKeyFrames Storyboard.TargetProperty="(Panel.Background).(GradientBrush.GradientStops)[1].(GradientStop.Color)" Storyboard.TargetName="border"> <EasingColorKeyFrame KeyTime="0:0:0.2" Value="#FF397C6E"/> </ColorAnimationUsingKeyFrames> </Storyboard> <Storyboard x:Key="Mouse_Leave"> <ColorAnimationUsingKeyFrames Storyboard.TargetProperty="(Panel.Background).(GradientBrush.GradientStops)[1].(GradientStop.Color)" Storyboard.TargetName="border"> <EasingColorKeyFrame KeyTime="0:0:0.2" Value="#FF2CA58D"/> </ColorAnimationUsingKeyFrames> <ColorAnimationUsingKeyFrames Storyboard.TargetProperty="(TextElement.Foreground).(SolidColorBrush.Color)" Storyboard.TargetName="textBlock"> <EasingColorKeyFrame KeyTime="0:0:0.2" Value="#FFFBF5F3"/> </ColorAnimationUsingKeyFrames> </Storyboard> <Storyboard x:Key="Mouse_LeftButton_Down"> <ThicknessAnimationUsingKeyFrames Storyboard.TargetProperty="(Border.BorderThickness)" Storyboard.TargetName="border"> <EasingThicknessKeyFrame KeyTime="0:0:0.03" Value="2"/> </ThicknessAnimationUsingKeyFrames> <ColorAnimationUsingKeyFrames Storyboard.TargetProperty="(Border.BorderBrush).(SolidColorBrush.Color)" Storyboard.TargetName="border"> <EasingColorKeyFrame KeyTime="0:0:0.03" Value="#FF1C473F"/> </ColorAnimationUsingKeyFrames> </Storyboard> <Storyboard x:Key="Mouse_LeftButton_Up"> <ThicknessAnimationUsingKeyFrames Storyboard.TargetProperty="(Border.BorderThickness)" Storyboard.TargetName="border"> <EasingThicknessKeyFrame KeyTime="0:0:0.05" Value="0"/> </ThicknessAnimationUsingKeyFrames> <ColorAnimationUsingKeyFrames Storyboard.TargetProperty="(Border.BorderBrush).(SolidColorBrush.Color)" Storyboard.TargetName="border"> <EasingColorKeyFrame KeyTime="0:0:0.05" Value="#FF1C473F"/> </ColorAnimationUsingKeyFrames> </Storyboard> </ControlTemplate.Resources> <Border x:Name="border" CornerRadius="7.5" BorderBrush="Black"> <Border.Background> <RadialGradientBrush> <GradientStop Color="#FF2CA58D" Offset="0"/> <GradientStop Color="#FF2CA58D" Offset="1"/> </RadialGradientBrush> </Border.Background> <Border.Effect> <DropShadowEffect/> </Border.Effect> <TextBlock x:Name="textBlock" TextWrapping="Wrap" Text="{TemplateBinding Content}" TextAlignment="Center" VerticalAlignment="Center" Foreground="White"/> </Border> <ControlTemplate.Triggers> <Trigger Property="IsEnabled" Value="False"> <Setter Property="Background" TargetName="border"> <Setter.Value> <RadialGradientBrush> <GradientStop Color="#FF474747" Offset="0"/> <GradientStop Color="#FF474747" Offset="1"/> </RadialGradientBrush> </Setter.Value> </Setter> <Setter Property="Foreground" TargetName="textBlock" Value="#FF959595"/> </Trigger> <EventTrigger RoutedEvent="UIElement.PreviewMouseLeftButtonUp"> <BeginStoryboard x:Name="Mouse_LeftButton_Up_BeginStoryboard" Storyboard="{StaticResource Mouse_LeftButton_Up}"/> </EventTrigger> <EventTrigger RoutedEvent="UIElement.MouseEnter"> <BeginStoryboard x:Name="Mouse_Enter_BeginStoryboard" Storyboard="{StaticResource Mouse_Enter}"/> </EventTrigger> <EventTrigger RoutedEvent="UIElement.MouseLeave"> <BeginStoryboard x:Name="Mouse_Leave_BeginStoryboard" Storyboard="{StaticResource Mouse_Leave}"/> </EventTrigger> <EventTrigger RoutedEvent="UIElement.PreviewMouseLeftButtonDown"> <BeginStoryboard x:Name="Mouse_LeftButton_Down_BeginStoryboard" Storyboard="{StaticResource Mouse_LeftButton_Down}"/> </EventTrigger> </ControlTemplate.Triggers> </ControlTemplate> When I put it IsEnabled = false, and the cursor is over the button, instead of just changing the color to this:
the animation on the MouseLeave trigger also works and the following mess is obtained:
Normal button:
And now I need to somehow block the animation, since it’s not very good to wait 300 ms after the animation, since the IsEnabled buttons depend on the text in TextBox, and dance with a tambourine too.
The purpose of the IsEnabled button:
btn_next.IsEnabled = tb.Text != ""; 


