我正在制作WPF应用程序。我有一个数据网格,所有列都将其宽度设置为“自动”。当我开始滚动表格时,一些列开始扩展。我的问题是:我可以设置列宽在开头的列中适合最长的数据(滚动时不扩展列)?
答案 0 :(得分:0)
当设置为Auto
时显示的数据需要更多空间时,wpf扩展的列宽,则此工作将自动完成。
答案 1 :(得分:0)
这是由于DataGrid
的虚拟化。仅渲染可见的项目,并在滚动的情况下重复使用控件(如果要激活它)。因此宽度不正确,因为最长的元素尚未渲染。列表控件执行得非常好,但您可以将许多项绑定到它。
我认为你有两个选择
如果没有很多要显示的项目,请关闭虚拟化,这可能是一个合适的解决方案。我承认,我没有尝试过,所以没有保修。您可以通过<DataGrid VirtualizingStackPanel.IsVirtualizing="False"/>
将其关闭。有关VirtualizationStackPanel
的更多信息,请查看here。
另一种解决方案可能是TextTrimming
。如果文字太长,TextBlocks
可以显示Ellipses
。因此,您必须为列分配自定义数据窗口,并将以下内容作为内容,例如<TextBlock Text="{Binding}" TextTrimming="WordEllipsis"/>
。请注意,如果用户能够编辑值,您还必须提供客户CellEditingTemplate
。有关TextTrimming
的更多信息,请查看here。要了解有关DataTemplate
的整个DataGrids
内容如何运作,您可以查看here。