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