Как заставить кнопку 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>
Другие вопросы по тегам