私はSilverlightアプリケーションを作成していますが、読み込み時間を改善しようとしています。私のページのロードが、私が最初に私のObservableCollectionを初期化要素が追加されるとObservableCollectionがUIを更新する
は:
this.MyItems = new ObservableCollection<Item>();
私のUIは、私は、コードを通じてのObservableCollectionにバインドするリストボックスです。 In MainPage_Loaded:
MyList.ItemsSource = App.ViewModel.MyItems;
私はモデルを私のモデルにバインドします。私はコレクションが空で、残りのUIがロードされ続ける(私の前提が正しいかどうかわからない)ので効率的であると思います。
DataContext = App.ViewModel;
は今、私は私のコレクションに項目を追加する:
for (int i = 0; i < number_of_items; i++)
{
this.MyItems.Add(myItems[i]); // myItems is a List<Item> already populated
Thread.Sleep(20);
}
私の目標は、各リストボックス項目のUIをレンダリングする時間がなるようにスレッドの睡眠を聞かせすることでした。また、一度に1つのアイテムを表示するUIが必要になりました。
結果、リストボックスの要素はすべてまとめて表示されます。 Sleepを1秒に設定すると、ListBoxは要素の数に1秒を掛けた後に値が設定されます。
この操作を最適化するにはどうすればよいですか?無駄な場合は、ListBoxを完全に作成されたObservableCollectionにバインドすることもできます。ありがとう!
VirtualizingStackPanelを使用していますか? – onmyway133