相对简单的问题,我正在努力寻找一个很好的优雅解决方案 . 我有一个带有列的网格,该列显示每n秒更新一次的值 . 我希望在值改变时显示动画,并根据数字是负数还是正数以不同颜色闪烁单元格 . 找到了一系列方法,几乎可以满足我的需求,但没有任何方法可以满足我的需求 .

  • 使用EventTrigger我可以在每次更新时使单元格闪烁 . 使用下面相对简单的动画 . 但是我无法使动画使用条件的颜色,因为故事板冻结了UI元素,所以我不能在故事板中使用绑定来定义颜色 .
<EventTrigger RoutedEvent="Binding.TargetUpdated">
            <BeginStoryboard HandoffBehavior="Compose" Name="GreenCell">
                <Storyboard TargetProperty="(TextBlock.Background).(SolidColorBrush.Color)">
                    <ColorAnimation Duration="0:0:1.50" From="Green" To="Transparent" AutoReverse="False"/>
                </Storyboard>
            </BeginStoryboard>
        </EventTrigger>
  • 使用DataTrigger我可以通过创建一个转换器将单元格颜色设置为条件,该转换器将更新转换为此值,如果值为负,则将数据触发器绑定到此并在此更改时设置背景颜色 . 但是如果数字已经是负数,并且仍然是负数(但是更改),则触发器不会被触发 .
<DataTrigger Binding="{Binding Value, Converter={StaticResource cellBackGroundConverter}}" Value="True">
            <DataTrigger.EnterActions>
                <BeginStoryboard HandoffBehavior="Compose" Name="GreenCell">
                    <Storyboard TargetProperty="(TextBlock.Background).(SolidColorBrush.Color)">
                        <ColorAnimation Duration="0:0:1.50" From="Green" To="Transparent" AutoReverse="False"/>
                    </Storyboard>
                </BeginStoryboard>
            </DataTrigger.EnterActions>
        </DataTrigger>
        <DataTrigger Binding="{Binding Value, Converter={StaticResource cellBackGroundConverter}}" Value="False">
            <DataTrigger.EnterActions>
                <BeginStoryboard HandoffBehavior="Compose" Name="RedCell">
                    <Storyboard TargetProperty="(TextBlock.Background).(SolidColorBrush.Color)">
                        <ColorAnimation Duration="0:0:1.50" From="Red" To="Transparent" AutoReverse="False"/>
                    </Storyboard>
                </BeginStoryboard>
            </DataTrigger.EnterActions>
        </DataTrigger>

我需要的似乎是一个事件触发器,捕获每个更新并使用数据触发器的条件方面播放动画 .

当然,我在这里错过了一些简单的东西,会喜欢有人让我直截了当!

非常感谢

马特