作者:手机用户2502913623 | 来源:互联网 | 2023-01-22 17:46
我正在尝试使用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)也需要一些时间.
但是我的软件在向下滚动时非常慢.
所以如何改进它,非常感谢.
![在此输入图像描述](https://img.php1.cn/3cd4a/1eebe/cd5/433ea70d6ea577b1.jpeg)
1> Mikolaytis..:
删除ScrollViewer
了ListView
.它禁用ListView
虚拟化.ListView
拥有它自己ScrollViewer
.
启用虚拟化 ListView
在这里阅读有关虚拟化的信息:https://docs.microsoft.com/en-us/windows/uwp/debug-test-perf/optimize-gridview-and-listview
哇,太棒了!非常感谢@Mikolaytis和@ Justin XL