2011-12-23 8 views
0

アニメーションを開始する前に幅と高さのプロパティを設定しても、最初のウィンドウの左から右に移動して最初の位置に移動するのはなぜですか。幅を表示し始めるときに高さの値をリセットしてから、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 
+0

何が起こると思われますか?コードはあなたがしたことを「正確に」実行しています。 ShowTitle()が呼び出されるたびに、高さ5と幅0が作成され、優先順位に従ってアニメーションが行われます(幅アニメーションは0〜400、高さアニメーションは5〜50)。 –

+0

これは何も起こりません。高さの値を5にリセットすることができず、幅のみが変更されます。その後、次のアニメーションエフェクトはその仕事をしますが、幅が50で始まるはずではありませんでした。幅が5であるはずでした。その結果、スムーズなトランジションではなくリセットされているようです。 – Middletone

答えて

1

わからないこれはあなたのシナリオに関連しますが、私はただのバグ(メインウィンドウの私の場合)幅/高さのアニメーションを追跡4時間を費やしている場合。何かをつかむための私の絶望的な試みで、私はこのポストをつまずいてしまった。最後に、私にとっては、「修正プログラム」は、.NET Framework 3.5を使用するためにプロジェクトを元に戻すことが判明しました。その贅沢をお持ちの場合は、それを試して、その行動が変わるかどうかを見てください。

アニメーションと幅/高さに問題がありますが、MS connectには、幅/高さがトリガーのあるプロパティを報告していない人が見つかりました(.NET Framework 4.0のみ)。私は問題を説明し、自分のバグレポートを提出した非常に小さなテストプロジェクトを構築しましたが、それ以来、20ヶ月前に他の人が自分の問題を投稿し、問題は「トリアージと解決」でした。

+0

私はこの同じ問題を抱えています。非同期の幅と高さのアニメーションは、フレームワーク3.5に戻ったときに正常に動作します。これはもっと大きな問題ではないでしょうか? – windowskm

関連する問題