我需要在导航回后在列表视图中设置用户的滚动位置。 该列表位于枢轴项内。要检测滚动位置,请使用 .win-pivot-item-content
的滚动document.querySelector(".win-pivot-item-content").onscroll = function () {
WinJS.Application.sessionState.scrollPosition = this.scrollTop;
};
我使用win-pivot-item-content的滚动位置,因为我的listview的滚动位置总是等于0 ......
这是一个技巧..但它正在发挥作用。仅当win-pivot-item的大小小于15 000 px(+150项)时(为什么?!) 因为之后我的列表加载了2次。
listView.winControl.onloadingstatechanged = function () {
// fired twice ..
};
如何强制列表加载内容一次?
编辑:我基于应用程序模板启动了一个新项目,列表视图的滚动位置也等于0.这是一个错误吗?
答案 0 :(得分:0)
您的列表未加载两次,加载列表时会多次触发此事件。
如果要在列表完全加载时执行某些操作,则必须检查加载状态:
listView.winControl.onloadingstatechanged = function (args) {
if (ev.detail.loadingState === "complete") {
// The code here will be called only when the list is fully loaded
}
};
This article解释了listview的不同加载状态。
请注意,我的示例显示了如何等待加载结束,但是在滚动的情况下,我认为可以在加载列表期间更早完成(等待结束时可能会导致视觉故障滚动)