You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

为何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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.12 12:16:01