Как заставить кнопку WPF вибрировать?
Я создаю приложение формы Windows, которое содержит несколько кнопок, используя WPF. Я хочу уведомить пользователя, что он должен загрузить PDF-файл, прежде чем он сможет нажимать другие кнопки, заставив кнопку загрузки PDF-файла мигать / вибрировать, если пользователь нажимает в других местах, а PDF-файл не загружается.
Например - точное поведение происходит в Microsoft Paint, если вы пытаетесь щелкнуть в любом месте за пределами поля редактирования цветов, когда оно открыто. (см. прилагаемый gif)
у кого-нибудь есть идея?
1 ответ
Вы можете использовать раскадровку с
DoubleAnimation
, измените падающую тень, заставьте ее автоматически вернуться и повторите ее (здесь 4 раза).
Вот
UserControl
, который вы можете повторно использовать для всех кнопок с таким эффектом; вам нужно только заменить текст «Содержимое кнопки» на какой-нибудь
DependencyProperty
сделать его универсальным.
<UserControl x:Class="AnimateDropShadow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
mc:Ignorable="d">
<Grid>
<Button HorizontalAlignment="Left" >
Button content
<Button.Effect>
<DropShadowEffect x:Name="warningEffect" Color="Black" BlurRadius="10" ShadowDepth="0"/>
</Button.Effect>
<Button.Triggers>
<EventTrigger RoutedEvent="Button.Click">
<BeginStoryboard>
<Storyboard>
<DoubleAnimation
Storyboard.TargetName="warningEffect"
Storyboard.TargetProperty="BlurRadius"
From="15" To="10" Duration="0:0:0.1"
AutoReverse="True" RepeatBehavior="0:0:0.4" />
</Storyboard>
</BeginStoryboard>
</EventTrigger>
</Button.Triggers>
</Button>
</Grid>
</UserControl>