我正在写一个Silverlight应用程序,我试图改善加载时间。有一个ObservableCollection更新用户界面元素得到添加
当我的页面加载,我先初始化我的ObservableCollection:
this.MyItems = new ObservableCollection<Item>();
我的UI是我通过代码绑定到一个ObservableCollection一个列表框。在MainPage_Loaded中:
MyList.ItemsSource = App.ViewModel.MyItems;
现在我将UI绑定到我的模型。我期望这是有效的,因为集合是空的,并且其余的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);
}
我的目标是让线程睡眠,以便它有时间来呈现每个列表框项目的用户界面。另外,我预计我的用户界面一次只能显示一个项目。
结果是ListBox元素一次出现。如果我设置1秒钟的睡眠时间,则1秒钟后元素数量将填充ListBox。
优化此操作的好方法是什么?如果它是徒劳的,我也可以将我的ListBox绑定到完全填充的ObservableCollection。谢谢!
你使用VirtualizingStackPanel吗? – onmyway133 2012-12-09 08:47:35