【问题标题】:Trigger animation of a text block according to its BG color根据 BG 颜色触发文本块的动画
【发布时间】:2016-06-23 09:35:01
【问题描述】:

我有 2 个用纯色填充的文本块,绿色或红色。

我已经为 xaml 本身中的文本块设计了样式。现在我的问题是如果颜色为红色,我需要为文本块设置动画。如果颜色是绿色,则不需要动画。目前动画是针对 2 个文本块启动的,与颜色无关。(在窗口加载事件中)

我尝试使用数据触发器,例如检查文本块的颜色,然后启动故事板。但无论如何它都不起作用。

请参考下面的代码,并根据 XAML 本身中的 BG 颜色为条件动画建议一个解决方案,因为我不想在视图模型中为此修改任何代码。

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

【问题讨论】:

    标签: c# wpf xaml


    【解决方案1】:

    如果我清楚地了解您想用Red BackgroundTextBlockes 制作动画。所以你可以使用Trigger

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

    【讨论】:

    • 这很好用。我想我以前试过这个。但可能由于代码中的一些错误,它没有工作。还是非常感谢。
    猜你喜欢
    • 2011-06-01
    • 1970-01-01
    • 2013-10-27
    • 2012-07-14
    • 2011-11-22
    • 2016-03-26
    • 1970-01-01
    • 1970-01-01
    • 2020-10-31
    相关资源
    最近更新 更多