【发布时间】:2021-08-04 13:32:08
【问题描述】:
我想保存和恢复DataGrid 列宽,我试过这个:
private void dataGrid_LayoutUpdated(object sender, EventArgs e)
{
foreach (var item in dataGrid.Columns.GetEnumeratorWithIndex())
{
Settings.ColumnWidth[item.Index] =
new DataGridLength(item.Value.Width.Value,
DataGridLengthUnitType.Pixel,
item.Value.Width.DesiredValue, item.Value.Width.DisplayValue);
}
}
恢复:
foreach (var item in dataGrid.Columns.GetEnumeratorWithIndex())
{
item.Value.Width = new
DataGridLength(Settings.ColumnWidth[item.Index].Value,
DataGridLengthUnitType.Pixel,
Settings.ColumnWidth[item.Index].DesiredValue,
Settings.ColumnWidth[item.Index].DisplayValue);
}
但不工作,所有列都存储为自动。
更新:
【问题讨论】:
-
失败的原因是存储、加载还是最终的宽度修改?为什么它会失败,是忽略您还是意外修改了宽度(例如以不同的顺序)?您可能有一个阻止手动修改列宽的数据网格配置参数吗?有时不是你必须修改的列宽而是列 Header 的宽度,我现在不确定
-
@AmoRobb 所有列都保存为 Auto,但如果我使用 Debug.WriteLine(item.Value.Width.Value),我可以看到值不同且以数字表示
-
如果来自EldHasp 的解决方案仍然不起作用,请提供有关您遇到的差异的更多信息
-
@AmoRobb 我更新了我的问题,您可以看到所有值都保存为 Auto