3

我在Windows Phone Silverlight項目中有一個LongListSelector,它綁定到嵌套ObservableCollection將LongListSelector綁定到異步更新的嵌套ObserverCollection(使用WebClient)

爲了讓分組工作和自動更新,我使用的自定義組類擴展了ObservableCollection

我的階級結構是這樣的:

Main.xaml.cs:

ObservableCollection<Group<MyViewModel>> _groups; 

Group.cs:

Group<T> : ObservableCollection<T> {...} 

我填充組異步,使用WebClient

WebClient wc = new WebClient(); 
wc.OpenReadCompleted += (sender, obj) { 
    // parse the response here, get list of MyModels 
    ... 

    foreach (var model in models) 
    { 
     var group = _groups.SingleOrDefault(g => g.Key == model.Key); 
     if (group == null) 
     { 
      group = new Group<MyModel> { Key = model.Key }; 
      _groups.Add(group); 
     } 

     group.Add(model); 
    } 
} 

所有這些工作正常,除了綁定到LongListSelector。 第一個項目會被正確添加,但每個後續項目添加到組列表都會導致IndexOutOfBounds異常。

我試着處理CollectionChanged事件,將項目添加到組中,而不是在ReadComplete上,但結果相同。

任何幫助將不勝感激。

回答

0

您是否試圖添加每個項目作爲一個組。您應該獲取整個數據並將它們分組並分配給longlistselector。因爲可能需要將新項目添加到現有組中,所以對增量加載的數據進行摸底並不會奏效。

這裏是關於相同的良好的樣品使用的平面列表是容易得到的和分組並分配到longlistselector

How to display data in a grouped list in LongListSelector for Windows Phone 8

Windows Phone Series – Jump Lists