В течение некоторого времени я пытался создать класс / серию классов, которые при обнаружении изменения размера в связанном объекте пытаются остановить изменение размера объекта и создать для него плавную анимацию изменения размера.Тем не менее, у меня всегда была проблема с мерцающими объектами на экране в течение секунды при целевом размере, прежде чем анимация включилась.
Короче говоря, после некоторой серьезной отладки и неуверенности в себе, яУ меня сложилось впечатление, что вызов Storyboard.Begin()
не влияет на целевое значение до следующего такта .Я предполагаю, что это как-то связано с тем, что Storyboard.Seek()
не произойдет до следующего такта.( См. Справочник MSDN ).И как таковой, объект принимает свою новую высоту для одного кадра до того, как анимация запускает его, возвращая его к начальной высоте.
Я потратил много времени, пытаясь заставить это работать, потому что это не таквсе просто, как кажется.Я не могу установить FrameworkElement.Height
в e.PreviousSize.Height
в обработчике FrameworkElement.SizeChanged
, потому что это влияет на «истинную» высоту объекта.В качестве примера того, почему это не работает: если во время воспроизведения анимации что-то изменяет «истинную» высоту объекта, то для параметра FrameworkElement.Height
можно установить целевую высоту, которая была получена при запуске анимации, и установить ее.как неправильное, устаревшее значение.
Я попробовал еще кое-что, и я уверен, что они придут, когда придут ответы, но любые ваши идеи будут очень признательны.