我正在开发一个Windows Phone 8.1
应用程序,我有一个包含大量数据项的列表页面。
所以我决定在ListBox上实现增量加载。幸运的是,我从Danial vaugan的Loading Data when the User Scrolls to the End of a List in Windows Phone 7样本
获得了解决方案滚动效果很好。但是注意到在5或6次增量加载后,Scrollviewer偏移量变化不起作用。从那时起,这个概念就不起作用了。
Here是我对Daniel Vaughan的示例项目的样本,它只加载了79个项目。之后滚动更改无效。
ScrollViewer是否有任何限制以防止它在某些值后偏移?但我不这么认为,因为我一次装了超过1000件物品,它顺利滚动到最后。
如何解决此问题?
答案 0 :(得分:1)
这是一个不使用MVVM的简单实现。我们的想法是获得ListView
的{{1}}。
ScrollViewer
您需要为onLoaded添加事件处理程序。
public static ScrollViewer GetScrollViewer(DependencyObject depObj)
{
if (depObj is ScrollViewer) return depObj as ScrollViewer;
for (int i = 0; i < VisualTreeHelper.GetChildrenCount(depObj); i++)
{
var child = VisualTreeHelper.GetChild(depObj, i);
var result = GetScrollViewer(child);
if (result != null) return result;
}
return null;
}
将MainPage_ViewChanged事件处理程序作为。
ScrollViewer viewer = GetScrollViewer(this.storylist);
viewer.ViewChanged += MainPage_ViewChanged;
这是一步一步xlwings。
这不是很整洁,因为它不遵循MVVM模式。幸运的是WP 8.1支持private async void MainPage_ViewChanged(object sender, ScrollViewerViewChangedEventArgs e)
{
ScrollViewer view = (ScrollViewer)sender;
double progress = view.VerticalOffset / view.ScrollableHeight;
System.Diagnostics.Debug.WriteLine(progress);
if (progress > 0.7 & !incall && !endoflist)
{
incall = true;
fetchCountries(++offset);
}
}
,可以按tutorial中的描述实现。
答案 1 :(得分:0)
Atlast找到了另一种获得解决方案的方法。使用x+1=0;
x+1=y;
x=1;
控件进行增量列表加载。它按预期工作。
Longlist Selector
TwitterSearch - Windows Phone 8 LongListSelector Infinite Scrolling Sample