提问者:小点点

如何使WPF按钮振动?


我正在使用WPF构建一个包含多个按钮的windows窗体应用程序。我想通知用户,他应该加载一个pdf,然后他可以按下其他按钮,通过使加载pdf按钮闪烁/振动,如果用户点击其他地方,没有pdf加载。

例如,如果在Microsoft Paint打开时尝试单击编辑颜色框之外的任何地方,则会发生类似的行为。(见附件gif)

有人有主意吗?


共2个答案

匿名用户

你可以使用一个带有双动画的故事板,改变下降阴影,使它自动返回并重复它(这里4次)。

<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>

匿名用户

在本例中,btn_test是一个WPF按钮。您可以在他们点击边界之外的任何时候运行它(onMouseDown或其他)。还有很多其他方法可以使用双动画和故事板。

        DoubleAnimation da = new DoubleAnimation();
        da.From = 1;
        da.To = .2;
        da.Duration = new Duration(TimeSpan.FromMilliseconds(250));
        da.AutoReverse = true;
        btn_test.BeginAnimation(OpacityProperty, da);