2009-05-19 11 views
2

私はWPF ListBoxコントロール(view code)を持っていますが、その中に100〜200個のアイテムを置いています。 ObservableCollectionは毎回変更にバインドされますが、更新するには分割された時間がかかり、UI全体がフリーズします。要素を段階的に追加する方法や、このコントロールのパフォーマンスを向上させるためにできることはありますか?WPF ListBoxのレンダリングを高速化するにはどうすればよいですか?

答えて

0

ListBoxにVirtualizingStackPanel.IsVirtualizing = "True"を設定してみてください。MSDN Documentationまた、これを参照してくださいblog post私が出会った。私は個人的にそれを試していないが、それは始めるのが良い場所のように思える。がんばろう!

2

ここで、(PanelListはListBoxなど)何かを試してみてください。 、

new Task(delegate { 
    foreach (var info in new DirectoryInfo("C:\\windows\\system32").EnumerateFiles()) { 
     PanelList.Dispatcher.Invoke(DispatcherPriority.Background, (Action)delegate { 
      PanelList.Items.Add(info); 
     }); 
     Thread.Sleep(0); 
    } 
}).Start(); 

あなたがバックグラウンドタスクを実行し、インクリメンタルDispatcher.Invokeを通じてUIコントロールを更新し、relativly低い優先順位を設定してくださいしたい、と私はいつもちょうど楽しみ(voluntariallyコンテキストスワップ)のために睡眠を投げます現在のタスクがキャンセルされたかどうかを確認する必要があります。

ああ、これはあまりパフォーマンスとUIの応答性があまり向上していません。

+0

このアプローチは、私が必要としていたものでした。投稿していただきありがとうございます! –

関連する問題