Para quem procura uma solução alternativa em C #:
Se você precisar, por algum motivo, ter o "AutoGeneratedColumns" habilitado, uma coisa que você pode fazer é especificar a largura de todas as colunas, exceto aquelas que deseja redimensionar automaticamente (não ocupará o espaço restante , mas será redimensionado para o conteúdo da célula ).
Exemplo (dgShopppingCart é meu DataGrid):
dgShoppingCart.Columns[0].Visibility = Visibility.Hidden;
dgShoppingCart.Columns[1].Header = "Qty";
dgShoppingCart.Columns[1].Width = 100;
dgShoppingCart.Columns[2].Header = "Product Name"; /*This will be resized to cell content*/
dgShoppingCart.Columns[3].Header = "Price";
dgShoppingCart.Columns[3].Width = 100;
dgShoppingCart.Columns[4].Visibility = Visibility.Hidden;
Para mim, funciona como uma solução alternativa porque eu precisava redimensionar o DataGrid quando o usuário maximizasse a janela.
AutoGenerateColumns="True"
?