我已经尝试了一段时间来创建一个类/系列的类,在检测到相关对象中的调整大小时,尝试暂停对象的大小调整并为其创建平滑的调整大小动画。 但是,在动画开始播放之前,我一直遇到屏幕上对象“闪烁”一秒的问题。
长话短说,在经过一些严肃的调试和自我怀疑之后,我认为在下一个时钟滴答之前调用Storyboard.Begin()
不会影响目标值。我认为这与Storyboard.Seek()
有关,直到下一个时钟滴答时才会发生。 (See the MSDN Reference)。因此,在动画开始之前,对象会在单帧中采用新的高度,然后将其拉回到起始高度。
我花了很长时间试图让它起作用,因为它并不像看起来那么简单。我无法将FrameworkElement.Height
设置为e.PreviousSize.Height
事件处理程序中的FrameworkElement.SizeChanged
,因为这会影响对象的“true”高度。作为为什么这不起作用的一个例子,如果在播放动画时某些东西改变了对象的“真实”高度,那么将FrameworkElement.Height
重新设置为动画开始时收集的目标高度将其设置为不正确的过时值。
我尝试了更多的东西,我确信它们会在答案到来时出现,但是你们的任何想法都会非常感激。