2011-07-19 13 views
0

質問は、ツリービューを持つWPFアプリケーションです。ノードのクリックで、時間間隔を持たないレポートが生成されます(時間がかかります)。だから私は、レポートが生成されるまで、Loading.gifファイルをウィンドウに表示するつもりです。TreeViewノードがWPFでクリックされたときの画像の読み込み

レポートを表示するメインウィンドウの処理中にイメージ(.gif)を表示させるにはどうしたらいいですか?レポートを表示した後、イメージを非表示にする必要があります。

これを行う方法は他にもありますか?

あなたの助けを前もって気に入ってください。

答えて

0

このための一般的な技術である:

1)あなたのウィンドウのビューモデルにIsBusyプロパティを作成します。変更するとPropertyChangedが発生することを確認してください。

2)アイテムがクリックされたときに実行されるコードでは、長時間実行されるタスクを実行するためにBackgroundWorkerを使用します。

3)BackgroundWorker.DoWork()を呼び出す前に、IsBusyをtrueに設定してください。 BackgroundWorker.RunWorkerCompletedが呼び出されたときに呼び出されるイベントハンドラでは、IsBusyをfalseに設定します。ウィンドウのDataTemplate

4)、IsBusyに結合DataTriggerStyleを追加し、画像の可視性を制御するためにそれを使用。あなたの代わりに、ウィンドウのビューモデルのアイテムビューモデルにIsBusy(と長時間実行タスクとBackgroundWorker)を移動することができ、そして項目についてDataTemplateに「ロード」のアニメーションを追加することができ

注意

これを行うと、ユーザーは複数のアイテムを同時にロードすることができ、TreeViewのアイテムの1つがクリックされただけでアプリケーション全体がロックされません。 (もちろん、複数のレポートを同時に生成する際のマルチスレッドの問題に対処する必要があります)。

関連する問題