使用scrollIntoView在WinJS Metro应用程序中定位ListView

时间:2012-08-16 15:30:17

标签: microsoft-metro winjs

我正在构建一个基于jscript的Windows 8 Metro应用程序。此应用程序的主屏幕是滚动“全景”视图,其中有几个列表视图显示应用程序状态的各个方面。在某些情况下,用户将在页面上选择一些导致导航到另一页面的内容(使用WinJS.Navigation.navigate方法。

当用户点击另一页上的后箭头时,它返回到主屏幕,我使用“scrollIntoView”将屏幕定位到导航发生前用户正在处理的部分。

不幸的是,这几乎不会导致正确定位视图。这似乎是随机的。我怀疑该页面尚未完成构建,并且滚动值是根据某个快照时间的状态设置的。

现在的问题是:

WinJS ListView对象是否会通知它们完全渲染和布局?或者这是页面就绪功能的工作吗?

感谢您的任何见解!

1 个答案:

答案 0 :(得分:2)

并排放置多个列表视图是Not A Good Idea(TM)。我建议放置一个列表视图,并将您的内容放在分组数据源中以获取组。如果项目具有不同的模板,则可以使用自定义项目模板选择器来动态选择模板。

此外,为了确保列表视图滚动到正确的位置,您需要使用indexOfFirstVisible来设置名称所暗示的项目。