private/Controls/Set-LastDataColumnStar.ps1

function Set-LastDataColumnStar {
    <#
    .SYNOPSIS
        Stretches the rightmost visible bound column to fill the viewport. Safe to rerun.
    #>

    [CmdletBinding()]
    param(
        [Parameter(Mandatory)]
        [System.Windows.Controls.DataGrid]$DataGrid,

        [switch]$Skip
    )

    if ($Skip) { return }

    $decoratedSet = $null
    if ($DataGrid.Resources.Contains('__EmptyCellDecoratedColumns')) {  $decoratedSet = $DataGrid.Resources['__EmptyCellDecoratedColumns'] }

    $frozenCount  = [int]$DataGrid.FrozenColumnCount
    $visibleBound = [System.Collections.Generic.List[object]]::new()
    foreach ($col in $DataGrid.Columns) {
        if ($col.Visibility -ne [System.Windows.Visibility]::Visible) { continue }
        if ($frozenCount -gt 0 -and $col.DisplayIndex -lt $frozenCount) { continue }
        $isBound = $col -is [System.Windows.Controls.DataGridTextColumn] -or
                   $col -is [System.Windows.Controls.DataGridCheckBoxColumn] -or
                   $col -is [System.Windows.Controls.DataGridComboBoxColumn]
        if (!$isBound -and $decoratedSet -and $decoratedSet.Contains($col)) { $isBound = $true }
        if ($isBound) { [void]$visibleBound.Add($col) }
    }
    if ($visibleBound.Count -eq 0) { return }

    $anyAssigned = $false
    foreach ($col in $visibleBound) { if ($col.DisplayIndex -ge 0) { $anyAssigned = $true; break } }
    $rightmost = if ($anyAssigned) { $visibleBound | Sort-Object DisplayIndex | Select-Object -Last 1 }
                 else { $visibleBound[$visibleBound.Count - 1] }

    # Reset stale Stars from prior runs (column hidden, frozen, or no longer rightmost).
    $explicitSet = $null
    if ($DataGrid.Resources.Contains('__ExplicitWidthColumns')) {  $explicitSet = $DataGrid.Resources['__ExplicitWidthColumns'] }
    foreach ($col in $DataGrid.Columns) {
        if ($col -ne $rightmost -and $col.Width.IsStar) {
            if ($explicitSet -and $explicitSet.Contains($col)) { continue }
            $col.Width = [System.Windows.Controls.DataGridLength]::Auto
        }
    }

    # Rightmost column already has a pixel width set - someone pinned it, leave it alone.
    if (!$rightmost.Width.IsAuto) { return }

    $rightmost.Width = [System.Windows.Controls.DataGridLength]::new(  1, [System.Windows.Controls.DataGridLengthUnitType]::Star)
}