Automatizar una columna de la cuadrícula para ocupar el espacio restante en el padre

En WPF, estoy teniendo muchísimo tiempo tratando de que una cuadrícula se ajuste correctamente.

Tengo el siguiente diseño para mi cuadrícula:

<ItemsControl HorizontalContentAlignment="Stretch">
        <ItemsControl.ItemTemplate>
            <DataTemplate>
                <Grid>
                    <Grid.ColumnDefinitions>
                        <ColumnDefinition Width="Auto"/>
                        <ColumnDefinition Width="80"/>
                        <ColumnDefinition Width="80"/>
                        <ColumnDefinition Width="100"/>
                    </Grid.ColumnDefinitions>
                    <Label Grid.Column="0" />
                    <Label Grid.Column="1"/>
                    <TextBox Grid.Column="2"/>
                    <Button Grid.Column="3"/>
                </Grid>
            </DataTemplate>
        </ItemsControl.ItemTemplate>
</ItemsControl>

El problema es que Width = "Auto" parece estar dimensionando esa columna al ancho del contenido, y no llenando el espacio adicional en el contenedor principal. Esto deja el resto de las columnas sin alinear, y el espacio en blanco feo al final de cada fila.

Probablemente me esté perdiendo algo simple, pero parece que no puedo encontrar un método para encajar adecuadamente en la columna.

¿O hay un mejor control para el trabajo?

Respuestas a la pregunta(2)

Su respuesta a la pregunta