XAML:
For everyone's convenience, here is an extension method based on David's answer:
public static void AutoResizeColumnWidths(this System.Windows.Controls.DataGrid dataGrid)
{
// http://stackoverflow.com/questions/4725724/wpf-datagrid-column-widths-not-updating-on-itemssource-change
foreach (var column in dataGrid.Columns)
column.Width = 0;
dataGrid.UpdateLayout();
foreach (var column in dataGrid.Columns)
column.Width = System.Windows.Controls.DataGridLength.Auto;
dataGrid.UpdateLayout();
}
And how it would be called:
dataGrid.AutoResizeColumnWidths();