Private/CmdletHelp/_PopulateCmdletDataGrid.ps1

function _PopulateCmdletDataGrid {
    [CmdletBinding()]
    param (
        [Parameter(Mandatory = $true)]
        [string]
        $Repository
    )

    $Modules = Get-InstalledModule | Where-Object Repository -EQ $Repository

    $Headers = [ordered]@{
        'Name'       = [string]
        'ModuleName' = [string]
        'Version'    = [version]
    }

    $Object = @()

    foreach ($Module in $Modules) {
        $Cmdlets = Get-Command -Module $Module.Name
        $Object += $Cmdlets
    }

    $Script:CmdletDataTable = New-Object System.Data.DataTable
    foreach ($Header in $Headers.GetEnumerator()) {
        $CmdletDataTable.Columns.Add($Header.Key, $Header.Value)
    }
    foreach ($Item in $Object) {
        $Array = @()
        Foreach ($Header in $Headers.GetEnumerator()) {
            switch ($Header.Value) {
                'string' {
                    $array += [string]$Item.$($Header.Key)
                }
                'int' {
                    $array += [int]$Item.$($Header.Key)
                }
                'version' {
                    $array += [version]$Item.$($Header.Key)
                }
            }
        }
        [void]$CmdletDataTable.Rows.Add($array)
    }

    $CmdletHelp_CmdletDataGrid.ItemsSource = $CmdletDataTable.DefaultView
}