我在Windows Phone Silverlight项目中有一个LongListSelector
,它绑定到嵌套的ObservableCollection
。
为了让分组自动运行和更新,我正在使用扩展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 :(得分:0)
您是否尝试添加每个项目作为一个组。您应该获取整个数据并将它们分组并分配给longlistselector。对增量加载数据进行摸索将无法正常工作,因为可能需要将新项目添加到现有组中。
这是一个很好的样本,可以在平面列表中使用,该列表随时可用并分组并分配给longlistselector
How to display data in a grouped list in LongListSelector for Windows Phone 8