1

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

4

2 回答 2

0

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

于 2013-04-15T10:24:01.690 回答
0

嗯,这是由于DataGrid. 只有可见的项目才会被渲染,并且控件在滚动的情况下被重用(如果你正在激活它)。因此宽度将不正确,因为最长的元素尚未渲染。列表控件的性能非常好,尽管您可以将许多项目绑定到它。

我认为你有两个选择

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

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

于 2013-04-15T11:37:35.730 回答