Windows 8 WinJS ListView自动调整大小

Windows 8 WinJS ListView自动调整大小,windows-8,winjs,Windows 8,Winjs,我想在WinJS中显示一个ListView,它从不显示自己的滚动条。我希望它水平地增长到它的父容器中。我实现它的方法基本上是通过在ListView上设置min-width css属性。在初始加载时,这项工作完美无瑕。当其他数据加载到备份数据源(本例中为WinJS.Binding.List)时,我希望ListView绘制元素并调整自身大小。相反,ListView绘制元素并添加自己的滚动水平条。大约一两秒钟后,ListView会自动调整大小并适合父容器 如何在添加元素后立即调整大小?强制布局不起作用

我想在WinJS中显示一个ListView,它从不显示自己的滚动条。我希望它水平地增长到它的父容器中。我实现它的方法基本上是通过在ListView上设置min-width css属性。在初始加载时,这项工作完美无瑕。当其他数据加载到备份数据源(本例中为WinJS.Binding.List)时,我希望ListView绘制元素并调整自身大小。相反,ListView绘制元素并添加自己的滚动水平条。大约一两秒钟后,ListView会自动调整大小并适合父容器


如何在添加元素后立即调整大小?强制布局不起作用,因为它会重新绘制每个项目,并且我正在将许多元素填充到此ListView中。

我使用了在div上找到的一种技术。基本上,在添加所有新数据项后,我会确保增加ListView父div的大小,直到ListView div不再有溢出为止

编辑:所以最后我决定反对这个策略,因为这篇文章的建议。我查看了内置的网格项目模板,并找到了如何确保列表视图适合整个屏幕。我使用了以下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;
}

我同意Dominic的观点,您应该尝试侦听listview控件上的loadingStateChanged事件。它可能不会立即启动,在这种情况下,我会在列表上显示进度元素,等待它重新绘制,然后删除进度。

根据您的性能配置文件,这可能会影响性能。最好在ListView上侦听loadingStateChanged事件,并使用您用来计算它的方法。如果您以后愿意接受可能的破坏,您还可以深入DOM,找到实际改变大小的元素,并使用它的大小来设置所需的宽度。最后,我确实对您想要的行为提出了质疑——在我发布的应用程序中,这是一个非常糟糕的体验。