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

3

我有一个(糟糕的)用户要求,需要使控件非常明显。

不幸的是,这意味着需要使用闪烁背景(丑陋)。

因此,该控件是一个包含TextBlockBorder,仅在相当罕见的情况下可见。

我已经查看了一些动画示例,并且它们都有一个“触发器”。最常见的是当用户单击某个东西时。

是否有一种方式可以让动画始终运行(如果控件可见)?

1个回答

5

请看,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后,无论动画是否仍在运行或停止,都没有可见的差异。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接