XAML:
Maybe I can help. I had the same problem and I found, I think, nice solution.
private void DataGrid_PreviewMouseMove(object sender, MouseEventArgs e)
{
DataGrid dg = (DataGrid)sender;
if (e.LeftButton == MouseButtonState.Pressed)
{
double width = 0;
foreach (DataGridColumn column in dg.Columns)
{
width += column.ActualWidth;
}
dg.Width = width + 2;
}
}