private/UI/Update-WpfDataGrid.ps1

function Update-WpfDataGrid {
    <#
    .SYNOPSIS
        Loads items into a WPF DataGrid.
 
    .DESCRIPTION
        Supports loading data collections (including DataTables) into a WPF DataGrid.
 
    .PARAMETER DataGrid
        The WPF DataGrid control.
 
    .PARAMETER Item
        The object or objects to load.
 
    .PARAMETER AutoSizeColumns
        Auto-sizes columns if set to $true.
    #>

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

        [Parameter(Mandatory)]
        $Item,

        [bool]$AutoSizeColumns = $true
    )

    if ($PSCmdlet.ShouldProcess("DataGrid", "Update ItemsSource and resize columns")) {
        # Clear existing data
        $DataGrid.ItemsSource = $null

        if ($null -eq $Item) {
            return
        }

        # If it's a DataTable, bind to DefaultView
        if ($Item -is [System.Data.DataTable]) {
            $DataGrid.ItemsSource = $Item.DefaultView
        }
        # If it's a DataSet, bind to first table's DefaultView
        elseif ($Item -is [System.Data.DataSet] -and $Item.Tables.Count -gt 0) {
            $DataGrid.ItemsSource = $Item.Tables[0].DefaultView
        }
        # Otherwise, bind directly to collection
        else {
            $DataGrid.ItemsSource = @($Item)
        }

        if ($AutoSizeColumns) {
            $DataGrid.Columns | ForEach-Object {
                $_.Width = 'Auto'
            }
        }
    }
}