#Requires -Version 5.1 Set-StrictMode -Version Latest Add-Type -AssemblyName PresentationFramework Add-Type -AssemblyName PresentationCore Add-Type -AssemblyName WindowsBase Add-Type -AssemblyName Microsoft.Win32 $root = $PSScriptRoot # ---- Laden in Reihenfolge: Base -> Models -> Services -> ViewModels ---- . "$root\ViewModels\BaseViewModel.ps1" # Add-Type fuer ObservableBase + RelayCommand . "$root\Models\AddonModel.ps1" . "$root\Models\PolicyCheckModel.ps1" . "$root\Services\FirefoxService.ps1" . "$root\Services\RegistryService.ps1" . "$root\Services\PolicyService.ps1" . "$root\ViewModels\DeployViewModel.ps1" . "$root\ViewModels\DiagnosticViewModel.ps1" . "$root\ViewModels\MainViewModel.ps1" # ---- XAML laden ---- [xml]$xaml = Get-Content "$root\Views\MainWindow.xaml" # x:Class entfernen (nicht benoetigt in PowerShell) $xaml.Window.RemoveAttribute("x:Class") $reader = [System.Xml.XmlNodeReader]::new($xaml) $window = [System.Windows.Markup.XamlReader]::Load($reader) # ---- ViewModel binden ---- $vm = [MainViewModel]::new() $window.DataContext = $vm # ---- Code-Behind fuer einfache Hilfsfunktionen ---- $addonGrid = $window.FindName("AddonGrid") $window.Add_SelectAll_Click = { foreach ($a in $vm.Deploy.Addons) { $a.IsSelected = $true } } $window.Add_SelectNone_Click = { foreach ($a in $vm.Deploy.Addons) { $a.IsSelected = $false } } # Click-Handler fuer Buttons die keinen Command haben (SelectAll/None) $window.FindName("AddonGrid") | Out-Null $window | Add-Member -MemberType ScriptMethod -Name "SelectAll_Click" -Force -Value { foreach ($a in $vm.Deploy.Addons) { $a.IsSelected = $true } } $window | Add-Member -MemberType ScriptMethod -Name "SelectNone_Click" -Force -Value { foreach ($a in $vm.Deploy.Addons) { $a.IsSelected = $false } } # Button-Referenzen fuer SelectAll/None direkt verdrahten $window.AddHandler( [System.Windows.Controls.Button]::ClickEvent, [System.Windows.RoutedEventHandler]{ param($sender, $e) switch ($sender.Content) { "Alle auswaehlen" { foreach ($a in $vm.Deploy.Addons) { $a.IsSelected = $true } } "Keine" { foreach ($a in $vm.Deploy.Addons) { $a.IsSelected = $false } } } } ) # ---- Diagnose beim Tab-Wechsel automatisch ausfuehren ---- $tabControl = $window.Content.Children | Where-Object { $_ -is [System.Windows.Controls.TabControl] } if ($tabControl) { $tabControl.Add_SelectionChanged({ if ($tabControl.SelectedIndex -eq 1) { $vm.Diagnostic.RunCheckCommand.Execute($null) } }) } # ---- Fenster anzeigen ---- $window.ShowDialog() | Out-Null