Private/_NewXAMLWindow.ps1
function _NewXAMLWindow { param ( [string]$FormName ) $xamlFile = "$ModuleRoot\Assets\$FormName.xaml" #create window $inputXML = Get-Content $xamlFile -Raw $inputXML = $inputXML -replace 'mc:Ignorable="d"', '' -replace 'x:N', 'N' -replace '^<Win.*', '<Window' [XML]$XAML = $inputXML $xaml.window.'Window.Resources'.ResourceDictionary.'ResourceDictionary.MergedDictionaries'.ResourceDictionary.Source = $ThemeFile #Read XAML $reader = (New-Object System.Xml.XmlNodeReader $xaml) try { New-Variable -Name $FormName -Value ([Windows.Markup.XamlReader]::Load( $reader )) -Scope Script -Force } catch { Write-Warning $_.Exception throw } $xaml.SelectNodes('//*[@Name]') | ForEach-Object { try { Set-Variable -Name "$($FormName)_$($_.Name)" -Value (Get-Variable $FormName).Value.FindName($_.Name) -Scope Script -Force -ErrorAction Stop } catch { throw } } } |