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

osc*_*tin 5 wpf expand listview

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

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

Mar*_*ser 11

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

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

<ListView x:Name="lv" ScrollViewer.CanContentScroll="False">
Run Code Online (Sandbox Code Playgroud)

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