WPF GridViewColumn Width =“auto”仅适用于当前滚动范围中的项目

时间:2011-06-10 13:51:42

标签: wpf listview expand

我有一个包含许多项目的ListView,并且我尝试将列宽设置为auto,以便它们自动扩展到列中最长字符串的宽度。起初,它似乎工作,但当我向下滚动列表时,我注意到一些较长的字符串被缩短,因为列没有足够自动扩展。然后我发现将宽度设置为auto似乎是根据当时网格上可见的列值计算宽度。因此,当我向下滚动到包含特定列的较长字符串的行时,我可以双击列分隔符以使其进一步扩展。这种行为似乎不对。

如何让列从一开始就扩展到最长字符串的长度?

1 个答案:

答案 0 :(得分:10)

原因是虚拟化会阻止生成某些项目,然后不会考虑它们来计算宽度。

因此,您可以关闭ListView的虚拟化,并将其添加到其中 - >

<ListView x:Name="lv" ScrollViewer.CanContentScroll="False">

但要小心,如果你有很多项目,它会减慢你的应用程序,因为它们都将在启动时生成。