Wpf 如何在应用动画之前立即将故事板从新值设置为原始值?

Wpf 如何在应用动画之前立即将故事板从新值设置为原始值?,wpf,animation,storyboard,Wpf,Animation,Storyboard,简而言之,我知道如何将当前值设置为新值,但我不知道如何(也找不到)将动画设置回动画运行前的值 换句话说,假设我当前的背景是黄色。我想根据一些逻辑将背景闪烁为红色,但我希望它再次从红色变回黄色。透明在这里不起作用,因为它用“透明”替换背景值,而不是通过它淡入 另外,我不是指FillBehavior属性,您可以使用该属性在动画运行后“取消应用”动画值,也不是指自动反转动画,因为这意味着动画必须先向前运行,这意味着我们将得到红色的淡入,而不是我们想要的瞬间脉冲 到目前为止,我发现的唯一方法是在代码隐藏

简而言之,我知道如何将当前值设置为新值,但我不知道如何(也找不到)将动画设置回动画运行前的值

换句话说,假设我当前的背景是黄色。我想根据一些逻辑将背景闪烁为红色,但我希望它再次从红色变回黄色。透明在这里不起作用,因为它用“透明”替换背景值,而不是通过它淡入

另外,我不是指FillBehavior属性,您可以使用该属性在动画运行后“取消应用”动画值,也不是指自动反转动画,因为这意味着动画必须先向前运行,这意味着我们将得到红色的淡入,而不是我们想要的瞬间脉冲

到目前为止,我发现的唯一方法是在代码隐藏中执行此操作,但这在逻辑安排方面引入了它自己的问题。我只想将“To”值设置为预设置动画的值。如何做到这一点?

仅在本示例中使用:

<StackPanel>
    <StackPanel.Resources>
        <Style TargetType="TextBox">
            <Style.Triggers>
                <EventTrigger RoutedEvent="MouseEnter">
                    <BeginStoryboard>
                        <BeginStoryboard.Storyboard>
                            <Storyboard>
                                <ColorAnimation Storyboard.TargetProperty="Background.Color"
                                                From="Red" Duration="0:0:1" />
                            </Storyboard>
                        </BeginStoryboard.Storyboard>
                    </BeginStoryboard>
                </EventTrigger>
            </Style.Triggers>
        </Style>
    </StackPanel.Resources>
    <TextBox Text="AAA" Background="Yellow" />
    <TextBox Text="BBB" Background="Blue" />
</StackPanel>

仅在本示例中使用:

<StackPanel>
    <StackPanel.Resources>
        <Style TargetType="TextBox">
            <Style.Triggers>
                <EventTrigger RoutedEvent="MouseEnter">
                    <BeginStoryboard>
                        <BeginStoryboard.Storyboard>
                            <Storyboard>
                                <ColorAnimation Storyboard.TargetProperty="Background.Color"
                                                From="Red" Duration="0:0:1" />
                            </Storyboard>
                        </BeginStoryboard.Storyboard>
                    </BeginStoryboard>
                </EventTrigger>
            </Style.Triggers>
        </Style>
    </StackPanel.Resources>
    <TextBox Text="AAA" Background="Yellow" />
    <TextBox Text="BBB" Background="Blue" />
</StackPanel>


代码隐藏有什么问题?代码隐藏的问题是,大多数其他与触发器相关的内容都是在XAML中定义的,因此现在必须拆分逻辑,更不用说(重新)构造代码以使用可以从代码隐藏中访问的资源了。当然可以,但它不是最优的。也许你可以在这个黄色背景上放一些红色的东西,然后在触发器上设置从不透明度1到0的动画。那么后面的代码怎么了?代码隐藏的问题是,大多数其他与触发器相关的内容都是在XAML中定义的,因此现在必须拆分逻辑,更不用说(重新)构造代码以使用可以从代码隐藏中访问的资源了。当然可以,但它不是最优的。也许你可以在黄色背景上放一些红色的东西,然后在触发器上设置从不透明度1到0的动画。伙计,这很简单!嘘!不好意思,我没试过!伙计,那很容易!嘘!不好意思,我没试过!