无法在WPF中设置表格宽度

时间:2013-04-15 08:41:40

标签: wpf mvvm

我正在制作WPF应用程序。我有一个数据网格,所有列都将其宽度设置为“自动”。当我开始滚动表格时,一些列开始扩展。我的问题是:我可以设置列宽在开头的列中适合最长的数据(滚动时不扩展列)?

2 个答案:

答案 0 :(得分:0)

当设置为Auto时显示的数据需要更多空间时,wpf扩展的列宽,则此工作将自动完成。

答案 1 :(得分:0)

这是由于DataGrid的虚拟化。仅渲染可见的项目,并在滚动的情况下重复使用控件(如果要激活它)。因此宽度不正确,因为最长的元素尚未渲染。列表控件执行得非常好,但您可以将许多项绑定到它。

我认为你有两个选择

  1. 如果没有很多要显示的项目,请关闭虚拟化,这可能是一个合适的解决方案。我承认,我没有尝试过,所以没有保修。您可以通过<DataGrid VirtualizingStackPanel.IsVirtualizing="False"/>将其关闭。有关VirtualizationStackPanel的更多信息,请查看here

  2. 另一种解决方案可能是TextTrimming。如果文字太长,TextBlocks可以显示Ellipses。因此,您必须为列分配自定义数据窗口,并将以下内容作为内容,例如<TextBlock Text="{Binding}" TextTrimming="WordEllipsis"/>。请注意,如果用户能够编辑值,您还必须提供客户CellEditingTemplate。有关TextTrimming的更多信息,请查看here。要了解有关DataTemplate的整个DataGrids内容如何运作,您可以查看here