【问题标题】:UWP Listview Adding Large Data SetsUWP Listview 添加大型数据集
【发布时间】: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


【解决方案1】:

您是否尝试过使用 MVVM 和 ObservableCollection?,并在从文件中读取项目后直接在 ObservablCollection 中添加项目。还要确保你的阅读和处理是异步的

【讨论】:

  • 谢谢亚历克斯。抱歉,我没有在 ListView 后面发布代码。 “listview.xaml.cs”支持确实实现了 ObservableCollection。不幸的是,当我对需要分析完整数据集的数据(求和、重新排序、标记等)进行一些“处理”时,我无法直接添加。我认为不多次修改 UI 会更快/更容易。文件 IO/处理都是异步的。
  • 您应该在模型列表中添加源代码,当用户查看时,您从模型中显示。使用 MVVM 并添加用户视图编号。
猜你喜欢
  • 2011-12-11
  • 2019-03-22
  • 1970-01-01
  • 2016-03-18
  • 2021-09-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-09-19
相关资源
最近更新 更多