控件可见时始终运行的WPF动画

控件可见时始终运行的WPF动画,wpf,animation,Wpf,Animation,我有一个(蹩脚的)用户要求使控件超级可见 不幸的是,这意味着一个闪烁的背景(Ug) 因此,控件是一个边框,其中包含一个文本块,只有在极少数情况下才可见 我看过一些动画示例,它们都有一个“触发器”。最常见的情况是当用户点击某个东西时 有没有办法让动画一直运行(当然,如果控件是可见的)?在这里,RepeatBehavior=“Forever”将保持动画运行,直到停止或删除 可以在控件加载上启用“自动反转”的情况下触发彩色动画,并使其永远运行 <Border Background="Transp

我有一个(蹩脚的)用户要求使控件超级可见

不幸的是,这意味着一个闪烁的背景(Ug)

因此,控件是一个
边框
,其中包含一个
文本块
,只有在极少数情况下才可见

我看过一些动画示例,它们都有一个“触发器”。最常见的情况是当用户点击某个东西时


有没有办法让动画一直运行(当然,如果控件是可见的)?

在这里,
RepeatBehavior=“Forever”
将保持动画运行,直到停止或删除

可以在控件加载上启用“自动反转”的情况下触发彩色动画,并使其永远运行

<Border Background="Transparent">
    <TextBlock Text="some text" />
    <Border.Triggers>
        <EventTrigger RoutedEvent="Loaded">
            <BeginStoryboard>
                <Storyboard>
                    <ColorAnimation To="SkyBlue"
                                    Storyboard.TargetProperty="Background.Color"
                                    RepeatBehavior="Forever"
                                    AutoReverse="True" />
                </Storyboard>
            </BeginStoryboard>
        </EventTrigger>
    </Border.Triggers>
</Border>

如果需要在可见性更改时触发动画,那么这里有一种方法,请注意,当IsVisible属性变为true时,动画将应用,而当IsVisible属性变为false时,动画将停止

<Border Background="Transparent">
    <TextBlock Text="some text" />
    <Border.Style>
        <Style TargetType="Border">
            <Style.Triggers>
                <Trigger Property="IsVisible"
                         Value="true">
                    <Trigger.EnterActions>
                        <BeginStoryboard x:Name="startFlashing">
                            <Storyboard>
                                <ColorAnimation To="SkyBlue"
                                                Storyboard.TargetProperty="Background.Color"
                                                RepeatBehavior="Forever"
                                                AutoReverse="True" />
                            </Storyboard>
                        </BeginStoryboard>
                    </Trigger.EnterActions>
                    <Trigger.ExitActions>
                        <StopStoryboard BeginStoryboardName="startFlashing" />
                    </Trigger.ExitActions>
                </Trigger>
            </Style.Triggers>
        </Style>
    </Border.Style>
</Border>

通常,在可见性设置为false后,如果动画仍在运行或停止,则没有可见差异