我有一个文本框的控件模板,其中包含这样的触发器部分
<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.
有没有办法在动画完成后自动清除动画结果或动态绑定正确的颜色?