在数据网格中的自动生成列上设置最大自动生成宽度
本文关键字:自动生成 设置 网格 数据网 数据 | 更新日期: 2023-09-27 18:07:19
我有一个DataGrid,我绑定到由SQL查询填充的数据表。我想这个网格的列是自动生成的宽度高达一定数量的像素,但仍然是可扩展的用户,如果他们想要它更宽。目前,数据网格上的ColumnWidth属性被设置为SizeToHeader(这似乎不像描述的那样工作,因为它仍然是根据单元格内容的大小)。
是否有办法设置最大生成宽度?
设置MaxColumnWidth可以防止用户将列的大小调整为大于该宽度。
我也试过挂钩到AutoGeneratedColumns,但由于行还没有加载的ActualWidth属性只是代表MinWidth我已经设置。是否有一个事件在数据网格完成加载其初始行集后触发?
遍历列集合并获取每个列的宽度。如果宽度大于阈值,则将其设置为最大宽度。您可能希望在控件初始化之后执行此操作。
这篇文章可能会有所帮助:http://support.microsoft.com/kb/812422
可以这样做:
foreach(var c in grid.Columns)
{
var width = c.Width;
if(width > threshold)
{
c.Width = threshold;
}
}
根据文档,在单个DataGridColumn上设置的Width属性优先于ColumnWidth属性。您可以在AutoGeneratedColumns事件中迭代DataGridColumns,并设置单独的宽度,并使它们保持不变。
我需要稍微修改rtalbot的代码,以使其在我的WPF/.net 4.5项目中工作…datagridlength:
// fix extra wide columns
foreach (var c in dgMain.Columns)
{
var width = c.ActualWidth;
if (width > 200)
{
c.Width = new DataGridLength(200);
}
}