我有一个(糟糕的)用户要求,需要使控件非常明显。
不幸的是,这意味着需要使用闪烁背景(丑陋)。
因此,该控件是一个包含TextBlock
的Border
,仅在相当罕见的情况下可见。
我已经查看了一些动画示例,并且它们都有一个“触发器”。最常见的是当用户单击某个东西时。
是否有一种方式可以让动画始终运行(如果控件可见)?
请看,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>