WPF: как анимировать изменение цвета?
У меня есть сетка, корневой элемент окна. Я хочу применить анимацию, которая изменит цвет фона с белого на зеленый за 5 секунд. Вот что я сделал:--2-->
private void Window_Loaded(object sender, RoutedEventArgs e)
{
ColorAnimation animation;
animation = new ColorAnimation();
animation.From = Colors.White;
animation.To = Colors.Green;
animation.Duration = new Duration(TimeSpan.FromSeconds(5));
rootElement.BeginAnimation(Grid.BackgroundProperty, animation);
}
код не работает. Ничего не меняется. Где я совершаю ошибку? Спасибо.
2 ответов
решена!
private void Window_Loaded(object sender, RoutedEventArgs e)
{
SolidColorBrush rootElementBrush;
ColorAnimation animation;
rootElementBrush = this.FindResource("RootElementBrush") as SolidColorBrush;
// Animate the brush
animation = new ColorAnimation();
animation.To = Colors.Green;
animation.Duration = new Duration(TimeSpan.FromSeconds(5));
rootElementBrush.BeginAnimation(SolidColorBrush.ColorProperty, animation);
}
вот объяснение:
моей первоначальной ошибкой было то, что я хотел изменить Grid.BackgroundProperty
назначая ему цвета, но вместо этого он принимает кисти... яблоки и апельсины! Итак, я создал SolidColorBrush
статический ресурс и назвал его rootElementBrush. В XAML я установил Grid rootElement
фоновое свойство этого статического ресурса. И, наконец, я изменил анимацию, поэтому теперь она меняет цвет для этого SolidColorBrush
. Полегче!
попробуйте:
<ColorAnimation
Storyboard.TargetName="PlayButtonArrow"
Storyboard.TargetProperty="Fill.Color"
From="White"
To="Green"
Duration="0:0:5.0"
AutoReverse="False"/>