I have this XAML:

<DataGrid x:Name="gdStreamGrid" Width="500" HorizontalContentAlignment="Stretch" Height="150" ItemsSource="{Binding StreamGridView}" AutoGenerateColumns="False" IsReadOnly="True" SelectionMode="Single">
                        <DataGridTextColumn Header="Stream Name" Width="*" Binding="{Binding HName}" IsReadOnly="True" CanUserReorder="False"/>
                        <DataGridTextColumn Header="Parent Name" Width="*"  Binding="{Binding PName}" IsReadOnly="True" CanUserReorder="False"/>
                        <DataGridTextColumn Header="Parent Measure" Width="*"   Binding="{Binding PMeasure}" IsReadOnly="True" CanUserReorder="False"/>
                        <DataGridTextColumn Binding="{Binding LLID}" IsReadOnly="True" Visibility="Hidden" CanUserReorder="False"/>
Nothing all that special about it. In fact, removing the final, hidden, column has no impact on this question, so it could have been left out.

I have two forms. One is the real form that this is used in, the other is a test form that I use to try out layout. I have copied and pasted this XAML between the two, but they behave quite differently in the two forms.

What is happening in the real form is that the three columns show up, taking up reasonable amounts of space so long as Width is either left out, or set to auto. Since the grid is quite a bit wider than that reasonable space, that means that there's an empty fourth column with no header.

I wanted the columns to spread out to fill the available space, so I copied the XAML over to the layout test form and tried various things. What makes it look best is if all columns have width set to auto, but that has no impact in the real form. What also looks okay in the test form is where all widths are set to * (with or without the hidden one having width set in any way). In the real form, this causes all three columns to be roughly one character wide, which is useless. The empty fourth column takes up all the rest of the space.

So, what's different between the two forms? Not a whole lot. In the test form, I have a grid with three columns, and this control is in a StackPanel in the center column. In the real form, the grid is in a Stack Panel in the first of two grid columns. So, both are in Stack Panels, neither are the first control in the Stack Panel, though what's above them is different between the two. And one form has a grid with three columns, while the other has a grid with two columns.

So, my two questions are:

1) Why doesn't the XAML work the same between the two forms?

2) How do I expand the columns in the real form such that there isn't that wasted fourth column? I can do that by fiddling with the column widths, but I'd rather not.