Автоматические плавные изменения размера - проблема с раскадровками - PullRequest
5 голосов
/ 26 мая 2011

В течение некоторого времени я пытался создать класс / серию классов, которые при обнаружении изменения размера в связанном объекте пытаются остановить изменение размера объекта и создать для него плавную анимацию изменения размера.Тем не менее, у меня всегда была проблема с мерцающими объектами на экране в течение секунды при целевом размере, прежде чем анимация включилась.

Короче говоря, после некоторой серьезной отладки и неуверенности в себе, яУ меня сложилось впечатление, что вызов Storyboard.Begin() не влияет на целевое значение до следующего такта .Я предполагаю, что это как-то связано с тем, что Storyboard.Seek() не произойдет до следующего такта.( См. Справочник MSDN ).И как таковой, объект принимает свою новую высоту для одного кадра до того, как анимация запускает его, возвращая его к начальной высоте.

Я потратил много времени, пытаясь заставить это работать, потому что это не таквсе просто, как кажется.Я не могу установить FrameworkElement.Height в e.PreviousSize.Height в обработчике FrameworkElement.SizeChanged, потому что это влияет на «истинную» высоту объекта.В качестве примера того, почему это не работает: если во время воспроизведения анимации что-то изменяет «истинную» высоту объекта, то для параметра FrameworkElement.Height можно установить целевую высоту, которая была получена при запуске анимации, и установить ее.как неправильное, устаревшее значение.

Я попробовал еще кое-что, и я уверен, что они придут, когда придут ответы, но любые ваши идеи будут очень признательны.

1 Ответ

0 голосов
/ 14 марта 2012

Вам, вероятно, повезет больше, если вы создадите контейнер макета, который обрабатывает изменение размеров дочерних объектов, например, Анимированная панель Робби Ингебретсена .

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