【问题标题】:Consuming large dataset in Silverlight 4在 Silverlight 4 中使用大型数据集
【发布时间】:2011-08-25 22:41:27
【问题描述】:

我想利用数据的异步加载,因为我的用户可能有潜在的连接。他们可能会撤回数千条记录中的数据编号,有时甚至更多。我现在没有可用的数据源来提供我现在的数千条记录。我只想确认用户将能够看到网格或列表框的内容,而数据集的其余部分在后台异步加载。看起来数据虚拟化可能是一种选择,但我发现的文章要么是垃圾,要么是基于旧版本的 SL。有没有人有任何链接和 POC 或这种行为的例子?

如果我在我的列表框上启用数据分页,第一页数据是否会显示在屏幕上,因为其余部分正在被提取?还是仅在用户导航到下一页时才加载数据?

【问题讨论】:

  • 搜索 PagedCollectionView 和/或 DomainDataSources 和 RIA 服务。我们正在使用它来拉回 100,000 条记录。它会拉回分页数据并延迟加载您告诉它的内容。
  • 看起来我将走 DomainDataSources 路线。感谢您的意见!

标签: c# silverlight silverlight-4.0


【解决方案1】:

您可以利用数据虚拟化,

  • 使要创建的 UI 元素的数量与要创建的元素成正比 使用 VirtualizingStackPanel.IsVirtualizing="True" 在屏幕上可见。

  • 让框架回收项目容器,而不是(重新)创建 他们每次,通过设置 VirtualizingStackPanel.VirtualizationMode="回收"。

  • 在滚动条运行时延迟滚动,方法是使用 ScrollViewer.IsDeferredScrollingEnabled="True"。请注意,这只 通过等到用户释放来提高感知性能 滚动条拇指来更新内容。然而,我们会看到 它还可以提高下述场景中的实际性能。

以上文字来自 Bea Stollinz 的出色 Data Virtualization document,为 WPF 编写,但也应在 Silverlight 中采用。

您还可以利用 .NET 异步编程模型,例如 IAsyncResultTPLEAP

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-03-11
    • 1970-01-01
    • 1970-01-01
    • 2016-07-09
    • 2020-04-04
    • 2012-07-07
    • 2011-05-27
    • 1970-01-01
    相关资源
    最近更新 更多