我有2个文本块,用绿色或红色填充纯色。
我已经为xaml本身的文本块设计了样式。现在我的问题是,如果颜色为红色,我需要为文本块设置动画。如果颜色为绿色则不需要动画。目前,无论颜色如何,都会为2个文本块启动动画。(在窗口加载的事件中)
我尝试使用数据触发器,例如检查文本块的颜色,然后启动故事板。但它无论如何都不起作用。
请参考下面的代码,并根据XAML本身的BG颜色向我推荐条件动画的解决方案,因为我不想在viewmodel中为此设置任何代码。
<Style x:Key="StatusTextStyle2" TargetType="{x:Type TextBlock}">
<Setter Property="FontSize" Value="16" />
<Setter Property="Width" Value="20"></Setter>
<Style.Resources>
<Storyboard x:Key="flashAnimation">
<DoubleAnimation AutoReverse="True"
Duration="0:0:0.5"
From="1"
RepeatBehavior="Forever"
Storyboard.TargetProperty="Opacity"
To="0" />
</Storyboard>
</Style.Resources>
<Style.Triggers>
<EventTrigger RoutedEvent="Window.Loaded">
<BeginStoryboard Name="flash" Storyboard="{StaticResource flashAnimation}" />
</EventTrigger>
</Style.Triggers>
</Style>
答案 0 :(得分:1)
如果我清楚地了解您希望使用TextBlockes
Red
为Background
设置动画。因此,您可以使用Trigger
。
<Style.Triggers>
<Trigger Property="Background" Value="Red">
<Trigger.EnterActions>
<BeginStoryboard Name="flash" Storyboard="{StaticResource flashAnimation}" />
</Trigger.EnterActions>
</Trigger>
</Style.Triggers>