3

LongListSelectorは、Windows Phone Silverlightプロジェクトに入れてあり、ネストされたObservableCollectionにバインドされています。LongListSelectorを(WebClientを使用して)非同期に更新されるネストされたObserverCollectionにバインドします。

グループ化が働いて、自動的に更新を取得するためには、私は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に割り当てる必要があります。インクリメンタルにロードされたデータを調べると、新しいアイテムが既存のグループに追加される必要があるため、うまく機能しません。ここ

は、容易に入手可能であり、グループ化され

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

Windows Phone Series – Jump Lists

をlonglistselectorに割り当てられているフラットリストで使用する同じで良いサンプルであります