2011-02-14 9 views
1

お友達、お時間をありがとうございます! WPFの下のコードに問題があります。ProgressBarと、値の変更の進行状況を示すアニメーションを使用します。アニメーションが終了したら、値を0にリセットして、ProgressBarが新しいアニメーションを開始できるようにします。 0〜100 again.But結果は0に値を設定することはできません、それは私が何を試しても永遠になると思われる!!!!! いくつかのアイデアをくれてありがとう、ありがとう!ProgressBarの値を設定できないのはなぜですか?

 pbStatus.Value = 0;//Promblem!! pbStatus is a ProgressBar 
     Duration dr = new Duration(TimeSpan.FromSeconds(2)); 
     DoubleAnimation da = new DoubleAnimation(100, dr); 
     pbStatus.IsIndeterminate = false; 
     pbStatus.Visibility = Visibility.Visible; 
     pbStatus.BeginAnimation(ProgressBar.ValueProperty, da); 

答えて

4

this articleを参照してください。


要約:アニメーションの後に値を設定する方法は3つあります。

  1. は全体のストーリーボードを取り外して停止するアニメーションのFillBehaviorプロパティを設定します。 (ストーリーボードがないため適用されません)
  2. 個々のプロパティからアニメーションを削除します。

(1)を停止するアニメーションの充填動作を設定します。

da.FillBehavior = FillBehavior.Stop; 

(3)新しい値を設定する前に、これを呼び出すことによって、アニメーションを削除します。

pbStatus.BeginAnimation(ProgressBar.ValueProperty, null); 
+0

ありがとうございました!この問題を解決するには、アニメーションを停止したり、アニメーションを削除したりすることが考えられます。 – Claw

+0

はい、あなたは私が必要な明示的なアクションを追加したと回答しています。 –

+1

そのようなプログレスバーをアニメーション化するのは、実際の進歩については何も言わないので、あまり良いアイデアではありません。 'IsIndeterminate'をtrueに設定することで、不確定なプログレスバーを使うべきです。また、これがあなたが探していた答えだった場合は、左側のチェックマークアウトラインをクリックしてそれを受け入れることができます。 –

1

this articleから:

private void CreateDynamicProgressBarControl() 
{ 
    ProgressBar PBar2 = new ProgressBar(); 
    PBar2.IsIndeterminate = false; 
    PBar2.Orientation = Orientation.Horizontal; 
    PBar2.Width = 100; 
    PBar2.Height = 10; 
    Duration duration = new Duration(TimeSpan.FromSeconds(10)); 
    DoubleAnimation doubleanimation = new DoubleAnimation(100.0, duration); 
    PBar2.BeginAnimation(ProgressBar.ValueProperty, doubleanimation); 
    SBar.Items.Add(PBar2); 

} 
+0

多分私の言葉は明確ではありません。いずれにしても、すべて同じです! – Claw

関連する問題