2016-04-20 105 views
0

我已經在我的應用程序中實現了增量加載,它有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

首先,簡化你的條件(刪除嵌套和否定)。

if (list.ItemsSource == null) 
{ 
    CenterProgressRing.IsActive = false; 
    return; 
} 
CenterProgressRing.IsActive = ((IncrementalSource)this.list.ItemsSource).isLoading; 

然後,它可能無法正常工作,如果你的最後一個項目下載後List_LayoutUpdated不叫(如不更新佈局)。很可能,您可能會更新CenterProgressRing.IsActiveIncrementalSource(如果您實施事件或使isLoading可觀察)或確保在下載最後一項後的List_LayoutUpdated。

+0

你說得對'List_LayoutUpdated'沒有被調用,最後一個項目被下載後。讓'isLoading'可觀察也沒有幫助。但添加行動/事件建議[本文](http://stackoverflow.com/questions/27870079/isupportincrementalloading-collection-notify-ui-when-loadingmoreitems-is-in-pr)做了工作。無論如何,感謝您的貢獻,我會將您的答案標記爲已接受的答案。 – dace