private/Controls/Get-UiDataGridVisibleColumnPaths.ps1
|
function Get-UiDataGridVisibleColumnPaths { <# .SYNOPSIS SortMemberPath (or Binding.Path) for every visible bound column, in onscreen order. #> [CmdletBinding()] param( [Parameter(Mandatory)] [System.Windows.Controls.DataGrid]$DataGrid ) $paths = [System.Collections.Generic.List[string]]::new() # DisplayIndex sort so a user dragged column order matches export output. foreach ($col in ($DataGrid.Columns | Sort-Object DisplayIndex)) { if ($col.Visibility -ne [System.Windows.Visibility]::Visible) { continue } $path = if ($col.SortMemberPath) { [string]$col.SortMemberPath } elseif ($col -is [System.Windows.Controls.DataGridBoundColumn] -and $col.Binding -and $col.Binding.Path) { [string]$col.Binding.Path.Path } elseif ($col.ClipboardContentBinding -and $col.ClipboardContentBinding.Path) { [string]$col.ClipboardContentBinding.Path.Path } else { $null } if (!$path) { continue } if ($path.StartsWith('_')) { continue } [void]$paths.Add($path) } return $paths } |