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

时间:2014-09-18 22:46:39

标签: wpf animation

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

可悲的是,这意味着闪烁的背景(Ug)。

因此,控件是Border,只有在相当罕见的情况下才能看到TextBlock

我看了几个动画示例,他们都有一个" Trigger"在他们。最常见的是当用户点击某些内容时。

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

1 个答案:

答案 0 :(得分:4)

在这里,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时应用动画,当它变为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后,如果动画仍在运行或停止,则没有明显的差异。