为何WPF动画会作用于同类型所有控件?如何实现单个控件动画?
WPF ColorAnimation 引发所有同类型控件被动画的问题及解决
我在WPF应用中尝试为部分Border元素的Background属性制作动画,使用ColorAnimation类编写了如下辅助方法:
public static void AnimateColor(SolidColorBrush to, Animatable fe) { ColorAnimation ca = new() { To = to.Color, Duration = new(TimeSpan.FromSeconds(0.5)), }; fe.BeginAnimation(SolidColorBrush.ColorProperty, ca); }
调用方式如下:
AnimateColor(new SolidColorBrush(Colors.Red), target.Background);
其中target是我想要添加动画的控件,但运行代码后,当前窗口中所有同类型控件(如所有Border元素)都被应用了该动画。
编辑:已通过采纳的答案解决
我补充内容以帮助遇到此问题的人理解WPF动画的工作原理:
此前我为每个Border的Background设置了同一个实例:
SolidColorBrush initialBackground = new(Colors.White); border1.Background = initialBackground; border2.Background = initialBackground; border3.Background = initialBackground;
我原本误以为动画作用于控件本身,这是错误的认知。现在我理解WPF的ColorAnimation是作用于被动画依赖属性的具体值实例,因此我实际上是在对同一个initialBackground实例执行动画,导致所有使用该实例的控件都同步发生了变化。
内容的提问来源于stack exchange,提问作者IFrank
相关产品推荐
相关产品推荐

