C# 按钮背景色动画

C# 按钮背景色动画,c#,wpf,animation,button,wpf-controls,C#,Wpf,Animation,Button,Wpf Controls,我有大约30个按钮在我的窗口,我想改变一个按钮的背景色后,一些进程 这是我的密码: private void Button_Click(object sender, RoutedEventArgs e){ . . //A Dialog Shows Up And Do Some Processes . Button b = (Button)sender; ColorAnimation ca = new ColorAnimation(); ca.From = ((SolidColorBrush)b.

我有大约30个按钮在我的窗口,我想改变一个按钮的背景色后,一些进程

这是我的密码:

private void Button_Click(object sender, RoutedEventArgs e){
.
. //A Dialog Shows Up And Do Some Processes
.
Button b = (Button)sender;
ColorAnimation ca = new ColorAnimation();
ca.From = ((SolidColorBrush)b.Background).Color;
ca.To = Color.FromArgb(255, 132, 27, 13);
ca.Duration = new Duration(TimeSpan.FromMilliseconds(2000));
ca.EasingFunction = new QuadraticEase();
b.Background.BeginAnimation(SolidColorBrush.ColorProperty, ca);
}

我的某些按钮已附加到此事件。当此方法运行并执行操作时,所有与sender颜色相同的按钮开始动画,但我只希望sender运行动画,而不是所有按钮。有什么解决办法吗?可能我使用了一个错误的属性来开始动画。

为每个按钮创建一个新笔刷将解决您的问题。按钮共享动画的原因是因为类是C。当绘制按钮时,所有按钮都会注意到动画对它们共享的笔刷内的颜色所做的更改。当您为每个画笔指定自己的画笔时,它们的画笔将具有自己的颜色,可以独立设置动画。

将不同的SolidColorBrush实例添加到按钮的背景中。每个按钮一个。请注意,您不需要从设置ca。它将自动从当前值开始。@克莱门斯感谢您的解决方案,成功了,我对所有按钮使用了一个笔刷,我将其更改为button.background=mybrush.Clone;解决了这个问题