自动平滑resize过渡 – 故事板的问题

我已经尝试了一段时间来创建一个类/系列类,在检测到相关对象中的resize时,尝试暂停对象的大小调整并为其创建平滑的resize动画。 但是,在动画开始播放之前,我一直遇到屏幕上对象“闪烁”一秒的问题。

长话短说,经过一些严肃的调试和自我怀疑,我的印象是调用Storyboard.Begin()不会影响目标值,直到下一个时钟滴答 。 我认为这与Storyboard.Seek()直到下一个时钟滴答时才会发生。 ( 请参阅MSDN参考 )。 因此,在动画开始之前,对象在单个帧中采用其新高度,将其拉回到起始高度。

我花了很长时间试图让它工作,因为它不像看起来那么简单。 我无法将FrameworkElement.Height设置为FrameworkElement.SizeChanged事件处理程序中的e.PreviousSize.Height ,因为它会影响对象的“true”高度。 作为为什么这不起作用的一个例子,如果在播放动画时某些东西改变了对象的“真实”高度,那么将FrameworkElement.Height重新设置为动画开始时收集的目标高度可以设置它作为一个不正确的,过时的价值。

还有更多我尝试过的东西,我相信它们会在答案到来时出现,但是你们的任何想法都会非常感激。

通过创建一个处理子对象大小调整的布局容器,你可能会有更好的运气,比如Robby Ingebretsen的Animated Panel 。