更改字体大小后WPF数据网格自动
本文关键字:数据网 数据 网格 WPF 字体 | 更新日期: 2023-09-27 18:06:26
我有一个DataGrid与一些列的宽度设置为"auto"。现在我要改变字体大小。当我把FontSize调大时,列会变宽,但当我把FontSize调小时,列的宽度不会根据FontSize缩小。
<DataGridTextColumn ....
Width="auto"
....
是否有一种方法可以强制DataGrid重新计算所有的"auto"answers"*"值?
重新设置列的宽度:
foreach (var dataGridColumn in dg.Columns)
{
dataGridColumn.Width = new DataGridLength(20);
dataGridColumn.Width = new DataGridLength();
}
最简单的方法是将ItemsSource
设置为null
,然后重新分配。例如,
// This method works for AutoGenerateColumns = true
Dgrd.FontSize = 8;
Dgrd.ItemsSource = null;
Dgrd.ItemsSource = ...;
一般的方法是存储列的旧宽度值,然后使用它们来恢复。例如,
Dictionary<DataGridColumn, double> columns = new Dictionary<DataGridColumn, double>();
private void Button_Click_1(object sender, RoutedEventArgs e)
{
Dgrd.FontSize = 20;
columns.Clear();
foreach (DataGridColumn col in Dgrd.Columns)
{
columns.Add(col, col.ActualWidth);
}
}
private void Button_Click_2(object sender, RoutedEventArgs e)
{
Dgrd.FontSize = 8;
foreach (DataGridColumn col in Dgrd.Columns)
{
col.Width = columns[col];
}
}