我想在WinJS中显示一个ListView,它从不显示它自己的滚动条。我希望它能够水平增长到其父容器中。我实现它的方式基本上是通过在ListView上设置min-width css属性。在初始加载时,这可以完美地工作。当其他数据加载到后备数据源(在本例中为WinJS.Binding.List)时,我希望ListView绘制元素并调整其大小。相反,ListView绘制元素并添加自己的滚动水平条。大约一两秒后,ListView会自动调整大小并适合父容器。
如何在添加元素后立即进行此调整?强制布局不起作用,因为它重绘了每一个项目,我在这个ListView中填充了很多元素。
答案 0 :(得分:0)
我在div上用how to detect overflow找到了一种技术。基本上,在我添加所有新数据项之后,我确保增加ListView的父div的大小,直到ListView div不再有溢出。
编辑:所以最后我决定反对这个策略,因为这篇帖子提供了建议。我查看了内置的Grid项目模板,并找出了如何确保列表视图正确适合整个屏幕。我使用了以下CSS。
#listid{
height: 100%;
position: relative;
width: 100%;
z-index: 0;
}
#section[role=main]{
margin-left: 0;
}
#listid .win-horizontal.win-viewport .win-surface {
margin-left: 120px;
margin-right: 115px;
}
答案 1 :(得分:0)
我同意Dominic的意见,您应该尝试在listview控件上侦听loadingStateChanged事件。它有可能不会立即触发,在这种情况下,我会在列表中显示进度元素并等待它重绘,然后删除进度。