Цвет фона кнопки Анимировать - PullRequest
0 голосов
/ 15 декабря 2018

В моем окне около 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 запускал анимацию, а не все.какое-нибудь решение этого?возможно я использую неправильное свойство, чтобы начать анимацию с.

1 Ответ

0 голосов
/ 15 декабря 2018

Создание новой кисти для каждой кнопки решит вашу проблему.Причина, по которой ваши кнопки делятся анимацией, заключается в том, что class являются ссылочными типами в C #.Когда пришло время рисовать кнопки, все кнопки заметят изменение, сделанное анимацией для Color внутри кисти, которую они разделяют.Когда вы даете каждому свою кисть, у ее кисти будет свой цвет, который можно анимировать независимо.Memory representation for value and reference types

...