使用进度环增量加载
Incremental loading with progress ring
我在我的应用程序中实现了增量加载,它有 isLoading
bool 变量,在构造函数中设置为 true 并设置为 false,当 hasMoreItems
设置为 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 在最后一个项目下载后。
我在我的应用程序中实现了增量加载,它有 isLoading
bool 变量,在构造函数中设置为 true 并设置为 false,当 hasMoreItems
设置为 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 在最后一个项目下载后。