我正在尝试为LongListSelector实现无限滚动。
我最初使用15个项填充列表,并依赖ItemRealized事件来检测我何时在列表的末尾并需要加载更多。 WXGA屏幕上一次可以看到5个项目。
我的问题是所有15个项目都是在第一次加载时实现的,它会立即加载更多。这是不可取的,因为每个负载都与昂贵的网络呼叫相关联。
是否可以限制在视图之外实现的项目数量(我将其设置为< 15),或者是否有办法依赖项目进入视图而不是实现?
答案 0 :(得分:1)
我认为您需要在viewmodel中维护一个属性,该属性将决定何时加载.. 代码应该类似于任何固定项目(在您的情况下为15)
private void ItemRealized(object sender, ItemRealizationEventArgs e)
{
if (e.ItemKind == LongListSelectorItemKind.Item)
{
ViewModel vm = DataContext as ViewModel;
var item = e.Container.Content;
var items = nameoflonglistSelector.ItemsSource;
var index = items.IndexOf(item);
if (vm.Isloading == false && index == nameoflonglistSelector.ItemsSource.Count-1) //initally it will be false
{
vm.laodextraData();
vm.Isloading = true;
}
}
}