¿Cómo puedo establecer el ancho de una DataGridColumn para que se ajuste a los contenidos ("Auto"), pero llenar completamente el espacio disponible para DataGrid en MVVM?

Tengo un WPFDataGrid que contiene algunos datos Me gustaría establecer el ancho de las columnas de modo que el contenido se ajuste y nunca se recorte (en su lugar, debería aparecer una barra de desplazamiento horizontal). Además, quiero elDataGrid para llenar todo el lugar disponible (estoy trabajando con unDockPanel) Estoy usando el siguiente código (simplificado):

<DataGrid ItemsSource="{Binding Table}">
    <DataGrid.Columns>
        <DataGridTextColumn MinWidth="100" Width="Auto" Header="Column 1" Binding="{Binding Property1}" />
        <DataGridTextColumn MinWidth="200" Width="Auto" Header="Column 2" Binding="{Binding Property2}" />
    </DataGrid.Columns>
</DataGrid>

Esto aparentemente no funciona de la caja conWidth="Auto" como siempre se ve así:

Esto obviamente se ve feo. Me gustaría tener toda la fila seleccionada o, lo que sería mucho mejor, las columnas para llenar todo el ancho, pero como se puede ver, esto no funciona.

Si yo usoWidth="*" en cambio, el contenido de las columnas se recorta, lo que es aún peor para mí.

Encontre unpregunta similar aquíy se publicó una solución alternativa allí. Esto puede funcionar, pero estoy trabajando con el patrón MVVM, por lo que elItemsSource se actualiza en ViewModel y no puedo pensar en una forma de hacerlo desde allí, porque no puedo acceder alActualWidth propiedad de laDataGridColumn. Además, me gustaría hacerlo solo en XAML si es posible.

Apreciaría cualquier ayuda. ¡Gracias!

Editar: como todavía no tengo idea de qué hacer al respecto, comienzo una pequeña recompensa. Estaría muy contento con una sugerencia de lo que uno podría hacer con mi problema. ¡Gracias de nuevo!

Edición 2: Después de la respuesta de saus, pensé en las opciones nuevamente. El problema es que necesito actualizar elWidth y elMinWidth propiedades también durante la ejecución de la aplicación, por lo que no solo después de cargar la ventana. Ya intenté hacer algo como

column.Width = new DataGridLength(1, DataGridLengthUnitType.Auto);
column.MinWidth = column.ActualWidth;
column.Width = new DataGridLength(1, DataGridLengthUnitType.Star);

en algún caso que se dispara cuando el subyacenteItemsSource delDataGrid está actualizando Sin embargo, esto no funciona, ya que elActualWidth la propiedad no parece cambiar después de configurar elWidth enAuto. ¿Existe alguna opción para "volver a pintar" de alguna manera para obtener elActualWidth propiedad actualizada? ¡Gracias!

Respuestas a la pregunta(7)

Su respuesta a la pregunta