根据BG颜色

时间:2016-03-09 06:16:56

标签: c# wpf xaml

我有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>

1 个答案:

答案 0 :(得分:1)

如果我清楚地了解您希望使用TextBlockes RedBackground设置动画。因此,您可以使用Trigger

<Style.Triggers>
    <Trigger Property="Background" Value="Red">
        <Trigger.EnterActions>
            <BeginStoryboard Name="flash" Storyboard="{StaticResource flashAnimation}" />
        </Trigger.EnterActions>
    </Trigger>
</Style.Triggers>