private/Controls/Resolve-HelperOptionValue.ps1

function Resolve-HelperOptionValue {
    <#
    .SYNOPSIS
        Resolves one HelperOptions value: control-name lookup if the value matches a registered Variable, literal otherwise.
    #>

    [CmdletBinding()]
    param(
        [object]$Value
    )

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

    # Strings are treated as lookup keys. Ints, creds, anything else - the user meant it literally.
    if ($Value -isnot [string]) { return $Value }
    if ([string]::IsNullOrWhiteSpace($Value)) { return $null }

    $session = Get-UiSession
    if (!$session) { return $Value }

    if ($session.Variables.ContainsKey($Value)) {
        $entry = $session.Variables[$Value]

        # CredentialControl is a PSCustomObject wraper - not a FrameworkElement, can't go through the extractor.
        if ($entry.PSTypeNames -contains 'PsUi.CredentialControl') {
            if (!$entry.UsernameBox -or !$entry.PasswordBox) { return $null }
            $user = $entry.UsernameBox.Text
            $pass = $entry.PasswordBox.SecurePassword
            if (!$user -or !$pass -or $pass.Length -eq 0) {
                if ($pass) { try { $pass.Dispose() } catch { } }
                return $null
            }
            # $pass is a fresh copy from WPF (new one per .SecurePassword read). Copy it for the credential, dispose the spare.
            $copy = $pass.Copy()
            $copy.MakeReadOnly()
            try { $pass.Dispose() } catch { }
            return [System.Management.Automation.PSCredential]::new($user, $copy)
        }

        # ExtractValue knows the per-control quirks - SelectedItem for ComboBox, SelectedDate for DatePicker, etc.
        if ($entry -is [System.Windows.FrameworkElement]) {
            $raw = [PsUi.ControlValueExtractor]::ExtractValue($entry)
            if ($null -ne $raw -and "$raw" -ne '') { return $raw }
            return $null
        }
    }

    return $Value
}