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"/>