Как установить свойство для группы объектов после его анимации - PullRequest
0 голосов
/ 23 декабря 2009

У меня есть несколько элементов управления на холсте. Мне нужно анимировать их свойства Canvas.Top и Canvas.Left. Я использую foreach, где я запускаю всю анимацию:

foreach (Control c in controls)
{
   tc.BeginAnimation(Canvas.TopProperty, yAnimation);
   tc.BeginAnimation(Canvas.LeftProperty, xAnimation);
}

где xAnimation и yAnimation - это две DoubleAnimation. Все работает нормально, но после анимации этих объектов я больше не могу их перетаскивать. Я нашел здесь причину и решение (установка окончательного значения в обработчике события Complete), но у меня это не работает: в моей задаче у меня есть куча объектов Обработчик событий завершен. У меня нет способа узнать, какая анимация объекта закончилась. Есть идеи?

Ответы [ 2 ]

0 голосов
/ 29 декабря 2009

Я решил таким образом: когда каждая анимация завершается, выполняется этот делегат:

xAnimation.Completed += delegate
{
   if (++completedXAnimations == n)
   {
       setFinalXValues(items);
   }
};

Метод setFinalXValues ​​(items) удаляет анимацию и устанавливает окончательные значения для всех элементов, участвующих в анимации. Не очень хороший способ, но он работает. Если у вас есть идеи получше, опубликуйте их.

0 голосов
/ 23 декабря 2009

Вы пробовали способ, описанный первым в вашей ссылке?

Установите для свойства анимации FillBehavior значение Stop

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