4

我有一个文本框的控件模板,其中包含这样的触发器部分

<ControlTemplate.Triggers>
    <EventTrigger  RoutedEvent="Binding.TargetUpdated">
        <BeginStoryboard>
            <Storyboard>
                <ColorAnimationUsingKeyFrames 
                    Storyboard.TargetName="Border"
                    Storyboard.TargetProperty="Background.(SolidColorBrush.Color)">
                    <EasingColorKeyFrame KeyTime="0:0:0.20" Value="Yellow"/>
                    <EasingColorKeyFrame KeyTime="0:0:1" Value="{Binding ElementName=Border, Path=Background.SolidColorBrush.Color}"/>
                </ColorAnimationUsingKeyFrames>
            </Storyboard>
        </BeginStoryboard>
    </EventTrigger>
</ControlTemplate.Triggers>

这个想法是,每当更新绑定目标时,文本框都会发出黄色脉冲。我的 UI 在控件之间具有复杂的依赖关系,我希望通过简单的视觉提示在事情发生变化时通知用户。

我上面遇到的问题是将文本框背景的颜色重置为以前的颜色。如果我将它动画化回白色,这可能不是原始颜色。有几种视觉状态,即normal disabled enabled

所以我希望脉冲黄色,然后恢复到以前的颜色。但是,如果我尝试绑定最终关键帧的颜色,则会出现类似错误

Cannot freeze storyboard to be used across multiple threads.

有没有办法在动画完成后自动清除动画结果或动态绑定正确的颜色?

4

1 回答 1

5

您可以将动画设置FillBehaviorStop. 动画属性将自动恢复到动画开始之前的值。

<ColorAnimationUsingKeyFrames FillBehavior="Stop"
    Storyboard.TargetName="Border"
    Storyboard.TargetProperty="Background.Color">
    ...
</ColorAnimationUsingKeyFrames>
于 2013-08-12T09:11:40.073 回答