0

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

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

4

2 回答 2

0

我使用了一种我发现的关于如何检测div 溢出的技术。基本上,在添加所有新数据项后,我确保增加 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;
}
于 2012-11-21T16:11:39.443 回答
0

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

于 2012-11-21T20:07:38.117 回答