アニメーションを開始する前に幅と高さのプロパティを設定しても、最初のウィンドウの左から右に移動して最初の位置に移動するのはなぜですか。幅を表示し始めるときに高さの値をリセットしてから、2番目のアニメーションを実行するときに高さの値を戻すようです。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)。 –
これは何も起こりません。高さの値を5にリセットすることができず、幅のみが変更されます。その後、次のアニメーションエフェクトはその仕事をしますが、幅が50で始まるはずではありませんでした。幅が5であるはずでした。その結果、スムーズなトランジションではなくリセットされているようです。 – Middletone