我在UWP应用程序中有一个coloranimation来动画TextBox的背景:
animation = new ColorAnimation();
animation.Duration = TimeSpan.FromMilliseconds(600);
animation.From = Colors.White;
animation.To = Color.FromArgb(255, 40, 40, 40);
animation.RepeatBehavior = new RepeatBehavior(2);
flashStoryBoard = new Storyboard();
flashStoryBoard.Children.Add(animation);
Storyboard.SetTarget(animation, MyBox);
Storyboard.SetTargetProperty(animation, "(Panel.Background).(SolidColorBrush.Color)");
当我运行上面的动画时,动画结束于具有白色背景颜色的TextBox,而不是预期的默认值(暗40,40,40色......)。当我删除repeatbehavior时,动画运行得很好但当然只有一次。没有应用缓动功能。当我将fillbehavior设置为停止时,我会在动画结束时获得闪烁效果。
有什么想法吗?
答案 0 :(得分:1)
当我运行上面的动画时,动画结束于具有白色背景颜色的TextBox,而不是预期的默认值(暗40,40,40色......)。
我无法重现这个问题,在我身边它以“FF404040”的颜色结束。也许您可以创建一个新的空白项目并再次尝试发布的代码。或者您可以与我们分享您的样本。
当我将fillbehavior设置为停止时,我会在动画结束时获得闪烁效果。
我认为您在加载TextBox
时尝试将TextBox
的背景从白色变为深灰色两次,但是当设置RepeatBehavior
等于或超过两次时,它最终会很快闪烁一次。
我找到了这种情况的解决方法,它使动画以“FF404040”颜色结束,最后不会闪烁:
Storyboard flashStoryBoard = new Storyboard();
ColorAnimation animation = new ColorAnimation();
animation.Duration = TimeSpan.FromMilliseconds(600);
animation.To = Colors.White;
animation.From = Color.FromArgb(255, 40, 40, 40);
animation.RepeatBehavior = new RepeatBehavior(2);
animation.AutoReverse = true;
flashStoryBoard.Children.Add(animation);
Storyboard.SetTarget(animation, MyBox);
Storyboard.SetTargetProperty(animation, "(Panel.Background).(SolidColorBrush.Color)");
flashStoryBoard.Begin();
正如您在我的代码中看到的,我交换了animation.To
和animation.From
,并将AutoReverse
属性设置为true。由于你的动画Duration
只有0.6秒,我认为这种方法不会影响用户体验并且可以解决闪烁问题。