2011-01-18 28 views
0

WPF ProgressBarで混乱します。WPF ProgressBarに進捗状況が表示されない

<ProgressBar Height="31" Margin="15" Name="progressBar" 
VerticalAlignment="Top" IsIndeterminate="True" /> 

これは私がそれを動作させるのに十分であることを私が知っているように私はそれを表示するために書いたコードです。しかし、私のプロジェクトではうまくいかない。つまり、ウィンドウを表示すると(ポップアップは実際にはxbapプロジェクトとして表示されます)、プログレスバーはアニメーションを表示しませんが、表示されます。

バックグラウンドスレッドはまだありません。UIスレッドはブロックされていません。

どうしたのですか?

+2

ProgressBarのデフォルトスタイルを変更しましたか? –

+0

デザイン時に動作しますか? – JYL

+0

あなたが表示しているのは、進行状況バーがどのようにセットアップされたかを画面に表示する方法だけを示しています。 –

答えて

0

不確定なプログレスバーが正しく表示されないWindowsテーマを使用することがあります。

3

まだ、バックグラウンドスレッドはありません。UIスレッドはブロックされていません。

あなたはそれが間違っていると思います。それはあなたの問題です。バックグラウンドスレッドがないため、UIスレッドはブロックされます。です。プログレスバーを更新するメソッドがUIスレッド(バックグラウンドスレッドで実行していない場合)で実行されている場合、メソッドが実行されコントロールが完了するまでプログレスバーの更新は表示されませんディスパッチャに返されます。

BackgroundWorkerを使用してバックグラウンドスレッドで長期実行メソッドを実行し、ProgressChangedイベントを発生させてプログレスバーを更新する必要があります。イベントハンドラはUIスレッド上で実行され、UIオブジェクトを更新できます。

+0

もっと詳しく見る - http://stackoverflow.com/questions/4956902/are-background-thread-really-helpful-if-were-updating-our-gui- regularularly – Rohit

0

あなたはプログレスバーの仕事をしたい場合は、アニメーションのインスタンスを作成し、それを助けるProgressBar.Mayに設定する必要があり

 ProgressBar test=new ProgressBar(); 
     Duration dr = new Duration(TimeSpan.FromSeconds(timespan)); 
     DoubleAnimation da = new DoubleAnimation(determination, dr); 
     test.IsIndeterminate = false; 
     test.Visibility = Visibility.Visible; 
     test.BeginAnimation(ProgressBar.ValueProperty, da); 

これらのコードを試してみてください!

関連する問題