2016-04-09 25 views
0

私はメインウィンドウを持っていて、タスクで作業をするたびにロード中のgifを含む「Please wait」パネルを表示しています。データがコンパイルされているときにgifが正常に動作しますが、UIコントロールをリフレッシュするINPCロジックが実行されている(メインのUIスレッド上で実行されている)場合、アプリケーションは1秒間にフリーズし、gifはスムーズに再生されません。WPFローディングパネルとUIフリーズ

たとえば、私はMVVMパターンに従い、ObservableCollection MyBindedCollectionにバインドされたビュー内にDataGridを持っています。タスクで実行されるビューモデルのコンストラクタでは、私はtmpの観測可能なコレクションを作成し、プロセスが終了すると変数MyBindedCollectionをtmpに設定します(したがって、アイテムを1つ追加しません)。もちろん、INPCロジックはMyBindedCollectionというMyプロパティの設定者にあります。

これを防止する方法はありますか?任意のアイデアをいただければ幸いです。

+2

最小限のコードを提供できますか? MVVMパターンに従っていますか?例えば。 UIスレッドの通知を最小限に抑える方がよい場合がよくあります。 AddRange()でループコレクション内でAdd()を実行する代わりに、単一の通知で追加を行います。 – ZoolWay

+0

@ZoolWay例を使ってOPを編集しました。私は何も気にはしませんが、大量のアイテムを束縛すると、UIがフリーズします。私がデータグリッドのサイズを制限すると、UIが表示される項目が少なくなります。 – Louitbol

+1

ObservableCollectionを交換して、 'MyBindedCollection.AddRange(tmp)'を使用しようとしましたか?また、 'EnableRowVirtualization'を設定して両方の値を試しましたか? – ZoolWay

答えて

0

@ZoolWayはい、私は賛成です。私はちょうど私の待機パネルとスレッドをフェードアウトします。私のコンテンツを表示する前にアニメーションが終了するのに十分な時間。したがって、滑らかに見えます。御時間ありがとうございます。

関連する問題