热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

UWPListview在绑定大量数据时变得非常缓慢

如何解决《UWPListview在绑定大量数据时变得非常缓慢》经验,为你挑选了1个好方法。

我正在尝试使用ObservableCollection将数据绑定到listview.

我的XAML是这样的


            
                
                    
                
                
                    
                        
                            
                                
                                
                                
                                
                                
                                
                            
                            
                            
                            
                            
                            
                            
                        
                    
                
            
        

和C#代码

private async Task DisplayDataAsync()
        {
            Debug.WriteLine("BeginRequest " + DateTime.Now);

            var repsOnse= (Application.Current as App).gEarthquakesGeoJson = await HttpEarthquakes.GetdEarthquakesGeoJsonAsync(strRequestUrl);
            if (repsonse.metadata.status == 200)
            {
                Debug.WriteLine("EndRequest " + DateTime.Now);
                Debug.WriteLine("BeginxBind " + DateTime.Now);
                Debug.WriteLine("Count " + repsonse.metadata.count);
                ObsList.Clear();
                if (repsonse.metadata.count > 0)
                {
                    //List fis = new List();
                    foreach (FeaturesItem em in repsonse.features)
                    {
                        FeaturesItem fi = new FeaturesItem
                        {
                            type = em.type,
                            properties = em.properties,
                            geometry = em.geometry,
                            id = em.id
                        };
                        ObsList.Add(fi);
                    }

                    //listEarthquakes.ItemsSource = ObsList;
                    Debug.WriteLine("EndxBind " + DateTime.Now);
                }
                else
                {
                    //No Data

                }
            }
            else
            {
                //Net Error

            }
        }

注意: GetdEarthquakesGeoJsonAsync()返回所有数据.

例如:

BeginRequest 8/17/2017 5:38:20 PM

EndRequest 8/17/2017 5:38:21 PM

BeginxBind 8/17/2017 5:38:21 PM

数1798

EndxBind 8/17/2017 5:38:21 PM

我使用Debug.WriteLine打印时间,发现Web请求和响应时间非常短,而ObsList.Add(fi)也需要一些时间.

但是我的软件在向下滚动时非常慢.

所以如何改进它,非常感谢.

在此输入图像描述



1> Mikolaytis..:

    删除ScrollViewerListView.它禁用ListView虚拟化.ListView拥有它自己ScrollViewer.

    启用虚拟化 ListView

在这里阅读有关虚拟化的信息:https://docs.microsoft.com/en-us/windows/uwp/debug-test-perf/optimize-gridview-and-listview


哇,太棒了!非常感谢@Mikolaytis和@ Justin XL
推荐阅读
author-avatar
手机用户2502913623
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有