带进度环的增量加载
本文关键字:加载 | 更新日期: 2024-10-22 15:59:27
我在应用程序中实现了增量加载,它有isLoading
布尔变量,在构造函数中设置为true,当hasMoreItems
设置为false时设置为false。我有ProgressRing
,它是这样工作的:
private void List_LayoutUpdated(object sender, object e)
{
if (list.Items.Count == 0 && list.ItemsSource == null)
CenterProgressRing.IsActive = true;
else if (list.Items.Count == 0 && list.ItemsSource != null)
{
if (!((IncrementalSource)this.list.ItemsSource).isLoading)
CenterProgressRing.IsActive = false;
else CenterProgressRing.IsActive = true;
}
else CenterProgressRing.IsActive = false;
}
因此,它在加载第一页时显示ProgressRing
,当有项目要接收时,它工作得非常好。但是,当遇到无需加载的情况时,ProgressRing
将永远保持活动状态。我不明白为什么。
首先,简化条件(删除嵌套和否定)。
if (list.ItemsSource == null)
{
CenterProgressRing.IsActive = false;
return;
}
CenterProgressRing.IsActive = ((IncrementalSource)this.list.ItemsSource).isLoading;
如果在下载最后一个项目后没有调用List_LayoutUpdated
(因为布局没有更新),那么它可能不起作用。可能,您可以在IncrementalSource
中更新CenterProgressRing.IsActive
(如果您实现了一个事件或使isLoading
可观察到),或者确保在下载最后一个项目后List_LayoutUpdated。