【发布时间】:2016-11-12 22:11:15
【问题描述】:
我正在使用类似于以下的列表视图:
<ListView Margin="10" Name="myListView">
<ListView.ItemTemplate>
<DataTemplate>
<WrapPanel>
<TextBlock Text="Name: " />
<TextBlock Text="{Binding Name}" FontWeight="Bold" />
</WrapPanel>
</DataTemplate>
</ListView.ItemTemplate>
我正在创建目录中所有文件的列表;一个可能非常大的数字。数据集的加载在这里没有问题;我正在预处理数据(从文件加载、生成临时 List、排序等),因此 IO 性能在这里不是问题。
使用我预先填充的 List 对象,然后我执行一个简单的 foreach 并添加:
private async Task AddItemsToList()
{
foreach(MyObject item in List<MyObject>)
{
myListView.Add(item)
}
}
上面是一个模型,但是我的代码是一样的。
处理此 foreach 时,UI 不会随着每个项目的添加而更新。一旦 foreach 完成,它就会显示为一大块。 AddItemsToList() 未等待。
我阅读了几篇文章 (particularly this),并认为 UWP 应该自动增量加载和利用占位符。
任何建议将不胜感激!
安德鲁,
注意:我知道 UI 虚拟化对于像 described here 这样的过多数据集(>10,000 项?)来说是理想的。
【问题讨论】:
-
可能是一个示例项目,其中包含不工作部分的示例数据。是的,建议对大型数据集使用 UI 虚拟化。
标签: c# listview uwp large-data