我想利用异步加载数据,因为我的用户可能有潜在的连接。它们有可能在数千条记录中拉回数据编号,有时甚至更多。我现在没有可用的数据源,现在可以给我数千条记录。我只想确认用户能够看到网格或列表框的内容,而其余数据集在后台加载异步。看起来数据虚拟化可能是一种选择,但我发现的文章要么是垃圾,要么是基于旧版本的SL。有没有人有任何链接和POC或这种行为的例子?
如果我在列表框上启用了数据页面,那么在获取其余数据时,屏幕上会显示第一页数据吗?或者只是在用户导航到下一页时才加载数据?
答案 0 :(得分:1)
您可以利用Data Virtualization,
创建要创建的UI元素的数量 使用VirtualizingStackPanel.IsVirtualizing =“True”在屏幕上可见。
让框架回收项容器而不是(重新)创建 他们每一次,通过设置 VirtualizingStackPanel.VirtualizationMode = “回收”。
- 使用滚动条滚动时延迟滚动 ScrollViewer.IsDeferredScrollingEnabled = “真”。请注意,这只是 通过等待用户发布来提高感知性能 滚动条拇指更新内容。但是,我们会看到 它还可以改善下述场景中的实际性能。
以上文字来自Bea Stollinz为WPF撰写的优秀Data Virtualization document,但也应在Silverlight中采用。
您也可以利用.NET异步编程模型,例如IAsyncResult,TPL和EAP。