进度环

时间:2016-04-20 10:11:33

标签: c# progress-bar lazy-loading

我在我的应用程序中实现了增量加载,它有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将永远保持活跃状态​​。我无法弄清楚原因。

1 个答案:

答案 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。