数据触发自动反转颜色

Datatrigger auto reverse color

如果 属性 为真,我想立即将背景颜色更改为红色。然后慢慢恢复到默认背景颜色。

我的第一次尝试,问题:默认颜色会立即出现并且不会随时间慢慢恢复

 <DataTrigger Binding="{Binding HasValueChanged}" Value="True">
            <Setter Property="Background" Value="Red" />
        </DataTrigger>
        <DataTrigger Binding="{Binding HasValueChanged}" Value="False">
            <DataTrigger.EnterActions>
                <BeginStoryboard>
                    <Storyboard>
                        <ColorAnimation  Storyboard.TargetProperty="Background.(SolidColorBrush.Color)" Duration="0:0:5" />
                    </Storyboard>
                </BeginStoryboard>
            </DataTrigger.EnterActions>
        </DataTrigger>

我的第二次尝试,问题:颜色像它应该的那样反转,但如果 属性 保持正确

,则颜色不会再次变红
<DataTrigger Binding="{Binding HasValueChanged}" Value="True">
                <DataTrigger.EnterActions>
                    <BeginStoryboard>
                        <Storyboard>
                            <ColorAnimation To="Red" AutoReverse="True"  Storyboard.TargetProperty="Background.(SolidColorBrush.Color)" Duration="0:0:5" />
                        </Storyboard>
                    </BeginStoryboard>
                </DataTrigger.EnterActions>
            </DataTrigger>

只要您不将时间轴的 FillBehavior 设置为 Stop,它就会保持最终的 属性 值,直到它被另一个时间轴替换。

所以这有效:

<DataTrigger Binding="{Binding HasValueChanged}" Value="True">
    <DataTrigger.EnterActions>
        <BeginStoryboard>
            <Storyboard>
                <ColorAnimation Storyboard.TargetProperty="Background.Color"
                                To="Red" Duration="0"/>
            </Storyboard>
        </BeginStoryboard>
    </DataTrigger.EnterActions>
    <DataTrigger.ExitActions>
        <BeginStoryboard>
            <Storyboard>
                <ColorAnimation Storyboard.TargetProperty="Background.Color"
                                From="Red" Duration="0:0:1"/>
            </Storyboard>
        </BeginStoryboard>
    </DataTrigger.ExitActions>
</DataTrigger>