Проблема с запуском любой анимации Silverlight - PullRequest
1 голос
/ 23 июня 2011

Следующий код предназначен для изменения цвета прямоугольника, но всякий раз, когда я запускаю его, все, что я получаю, это экран загрузки silverlight на 100%. У меня пока нет анимации, поэтому я уверен, что мне чего-то не хватает. Следующее примерно адаптировано из примера кода на сайте msdn. Ни один из примеров кода не работает для меня, что может помочь в диагностике проблемы:

rectangles - это массив прямоугольников, которые появляются на экране, если этот код закомментирован.

RootElement - это сетка, в которой расположены прямоугольники, определенные выше.

if (rectangles[5] == null)
                MessageBox.Show("Oh dear.");



        Storyboard sb = new Storyboard();
        Duration duration = new Duration(TimeSpan.FromSeconds(2));
        ColorAnimation exampleAnimation = new ColorAnimation();
        exampleAnimation.Duration = duration;
        sb.Duration = duration;
        Storyboard.SetTarget(exampleAnimation, rectangles[5]);
        Storyboard.SetTargetProperty(exampleAnimation, new PropertyPath(rectangles[5].Fill));
        exampleAnimation.To = Color.FromArgb(255, 255, 255, 255);
        RootElement.Resources.Add("unique_id", sb);
        sb.Children.Add(exampleAnimation);
        sb.Begin();

Насколько я могу судить, консоль javascript указывает, что путь свойства равен нулю.

1 Ответ

0 голосов
/ 23 июня 2011

Ваш PropertyPath недействителен. Он ожидает имя свойства, а не значение свойства, которое вы хотите анимировать. Код rectangles[5].Fill вернет кисть, которая используется при рендеринге прямоугольника. Вы должны использовать что-то вроде new PropertyPath("Fill").

Но в вашем случае, похоже, что вы хотите анимировать свойство Color SolidColorBrush, которое находится в свойстве Fill, тогда вы захотите использовать что-то вроде new PropertyPath("(Shape.Fill).(SolidColorBrush.Color)"). Этот путь был адаптирован из этого обсуждения на форуме .

Вы также можете изменить цель и просто сделать:

Storyboard.SetTarget(exampleAnimation, rectangles[5].Fill);
Storyboard.SetTargetProperty(exampleAnimation, new PropertyPath("Color"));

Конечно, все это предполагает, что Fill на самом деле является SolidColorBrush.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...