не имеет никакого смысла для меня, извините.
Я понимаю код, но эта часть:
Ширина столбца уменьшается, чтобы соответствовать правильно при увеличении размера столбца, ноне правильно сжаты, чтобы соответствовать при уменьшении размера столбца.Он не будет уменьшать размер столбца в обновлении ItemsSource после его увеличения
озадачило меня
Я понял это так:
если ширина содержимого столбца увеличивается, ширина столбца увеличивается, но если ширина содержимого уменьшается, ширина столбца не увеличивается.
Это верно?
, если это так, этоПоведение нормальное: Wpf просто изменит размер ширины столбца таблицы данных, если для него задано значение Авто, т. е. содержимое не может быть отображено полностью.Поэтому, когда ширина содержимого уменьшается, размер столбца не изменяется, так как содержимое все еще можно увидеть полностью.
Единственный способ заставить wpf пересчитать ширину столбцов состоит в том, чтобы заставить их все к 0и затем вернемся к auto в коде позади, с одним или двумя добавленными updateLayout (), но это не очень хорошее программирование: - /
Edit: в основном, в вашем коде позади:
foreach (DataGridColumn c in dg.Columns)
c.Width = 0;
// Update your DG's source here
foreach (DataGridColumn c in dg.Columns)
c.Width = DataGridLength.Auto;
и вам, вероятно, нужен dg.UpdateLayout () или два где-то там (после обновления и настройки обратно на авто, вероятно)