【发布时间】:2011-01-13 07:31:46
【问题描述】:
我正在编写一个 silverlight 应用程序,我正在尝试改进加载时间。
当我的页面加载时,我首先初始化我的 ObservableCollection:
this.MyItems = new ObservableCollection<Item>();
我的 UI 是一个 ListBox,我通过代码将其绑定到 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);
}
我的目标是让线程休眠,以便它有时间为每个列表框项呈现 UI。另外,我希望我的 UI 一次显示一个项目。
结果是 ListBox 元素同时出现。如果我将睡眠时间设置为 1 秒,则 ListBox 会在 1 秒后填充元素数。
优化此操作的好方法是什么?如果它是徒劳的,我也可以将我的 ListBox 绑定到一个完全填充的 ObservableCollection。谢谢!
【问题讨论】:
-
你使用 VirtualizingStackPanel 吗?
标签: windows-phone-7 silverlight-3.0