为什么这个动画导致窗口在原始位置从左到右移动,然后跳到另一个位置,即使我在动画开始之前设置了宽度和高度属性。它似乎在重新开始显示宽度时重置高度值,然后在执行第二次动画时将其更改回来。为什么WPF动画不尊重高度或宽度值?
Sub ShowTitle(ByVal Text As String)
tb_text.Visibility = Windows.Visibility.Hidden
tb_text.Height = 5
tb_text.Width = 0
tb_text.Text = Text
tb_text.Visibility = Windows.Visibility.Visible
Dim SB As New Animation.Storyboard
Dim FIW = New Animation.DoubleAnimation(0, 400, New Duration(TimeSpan.FromSeconds(2)))
SB.Children.Add(FIW)
Animation.Storyboard.SetTargetName(FIW, tb_text.Name)
Animation.Storyboard.SetTargetProperty(FIW, New PropertyPath(WidthProperty))
Dim FIH = New Animation.DoubleAnimation(5.0, 50.0, New Duration(TimeSpan.FromSeconds(2)))
FIH.BeginTime = TimeSpan.FromSeconds(2)
SB.Children.Add(FIH)
Animation.Storyboard.SetTargetName(FIH, tb_text.Name)
Animation.Storyboard.SetTargetProperty(FIH, New PropertyPath(HeightProperty))
SB.Begin(Me)
End Sub
你预计会发生什么?代码正在“完全”执行你所要做的事情。每次调用ShowTitle()时,它将使高度为5,宽度为0,然后根据优先级动画,即从0到400的宽度动画,然后是从5到50的高度动画。 – 2011-12-23 09:18:48
虽然不是这样,它无法将高度值重置为5,只会改变宽度。然后当这个完成时,下一个动画效果是它的工作,但它不应该以50的宽度开始,它应该有5的宽度。结果是它似乎是重置自己而不是平滑过渡。 – Middletone 2011-12-23 14:26:11