我在我的应用程序中实现了增量加载,它有isLoading
bool变量,在构造函数中设置为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
将永远保持活跃状态。我无法弄清楚原因。
答案 0 :(得分:0)
首先,简化您的条件(删除嵌套和否定)。
if (list.ItemsSource == null)
{
CenterProgressRing.IsActive = false;
return;
}
CenterProgressRing.IsActive = ((IncrementalSource)this.list.ItemsSource).isLoading;
如果在下载最后一个项目后未调用List_LayoutUpdated
(因为布局未更新),则可能无效。您可以更新CenterProgressRing.IsActive
中的IncrementalSource
(如果您实现了一个事件或使isLoading
可观察),或者确保在下载最后一个项目后使用List_LayoutUpdated。