Show-EulWebView2Dialog #
ÜBERSICHT #
Öffnet ein modales WPF-Fenster mit eingebettetem WebView2 (Chromium-basiert) und zeigt darin HTML an.
SYNTAX #
Show-EulWebView2Dialog [-Html] <string> [[-Title] <string>] [[-Width] <int>] [[-Height] <int>]
[[-OnAction] <scriptblock>] [-EnableDevTools] [[-UserDataFolder] <string>] [[-ImageFolder]
<string>] [<CommonParameters>]
BESCHREIBUNG #
Foundation für alle künftigen HTML-Dialoge im EULANDA-Ökosystem.
API-kompatibel zu Show-EulMaintWebDialog aus EulandaMaintenance, nutzt aber Microsoft Edge WebView2 (Chromium) statt System.Windows.Forms.WebBrowser (IE-Renderer). Damit moderne JavaScript- und CSS-Features verfügbar, F12- DevTools optional aktivierbar, AddHostObjectToScript-COM-Bridge möglich.
Die WebView2-Wrapper-DLLs (Microsoft.Web.WebView2.Core.dll, Microsoft.Web.WebView2.WinForms.dll, WebView2Loader.dll) werden mit EulandaXtools im Ordner lib/webview2/ ausgeliefert (keine NuGet- oder PSGallery-Installation nötig). Die WebView2-Runtime (Chromium-Engine selbst) ist Microsoft-System-Komponente und auf Windows 11 evergreen installiert. ErpXe XE13 setzt sie ohnehin voraus.
Bidirektionale Action-Bridge in zwei Varianten:
Modernes Pattern (bevorzugt) - JavaScript ruft chrome.webview.postMessage: chrome.webview.postMessage(JSON.stringify({action:‘save’, params:{x:1}})); Auf .NET-Seite kommt WebMessageReceived, OnAction-Callback wird gefeuert.
Backup-Pattern (Kompatibilität mit Maintenance/Xfacture) - URL-Scheme: location.href = ’eulmaint:save?x=1’; NavigationStarting fängt eulmaint:, eul: und xtools: ab.
Wenn der OnAction-Callback einen String zurückliefert, wird dieser sofort als neues HTML in den WebView2 geladen.
Im PowershellPlugin-Modus aus ErpXe (WaitMode=InputIdle) wird automatisch $Task.InputIdle() aufgerufen, damit ErpXe vor dem modalen ShowDialog freigegeben wird (analog Show-EulMaintWebDialog).
PARAMETER #
-Html #
Type: string
Der anzuzeigende HTML-Inhalt als String. Komplette Seite inkl.
…….-Title #
Type: string
Default: 'EULANDA'
Fenster-Titel.
-Width #
Type: int
Default: 1200
Fenster-Breite in Pixeln. Default 1200.
-Height #
Type: int
Default: 800
Fenster-Höhe in Pixeln. Default 800.
-OnAction #
Type: scriptblock
Optional: ScriptBlock der bei eingehenden Actions ausgeführt wird. Bekommt zwei Argumente: (Action-Name, Params-Hashtable). Beispiel: { param($action, $params) … }
Liefert der Callback einen String zurück, wird dieser als neues HTML in den WebView2 geladen (Re-Render nach Aktion).
-Task #
Optional: $Task-Objekt aus dem PowershellPlugin-Mechanismus (ErpXe). Wenn vorhanden, wird $Task.InputIdle() vor ShowDialog() aufgerufen.
-EnableDevTools #
Type: switch
Optional: öffnet die Chromium-DevTools automatisch beim Anzeigen. Hilfreich für Entwicklung, sollte in Produktion deaktiviert bleiben. F12 funktioniert standardmäßig auch ohne diesen Switch.
-UserDataFolder #
Type: string
Optional: Pfad für WebView2-Userdata (Cache, Cookies, LocalStorage). Default: %LOCALAPPDATA%\EulandaXtools\WebView2. Bei mehreren parallel laufenden Plugins eigene Ordner pro Plugin vergeben, sonst stören sich Cookies/Cache gegenseitig.
AUSGABEN #
void (Fenster wird geöffnet, blockiert bis Schließen)
BEISPIELE #
Show-EulWebView2Dialog -Title 'Test' -Html '<html><body><h1>Hello</h1></body></html>'
$html = @"
<html><body>
<button onclick="chrome.webview.postMessage(JSON.stringify({action:'hello'}))">Klick</button>
</body></html>
"@
Show-EulWebView2Dialog -Html $html -OnAction {
param($action, $params)
if ($action -eq 'hello') {
return '<html><body><h1>Hallo zurück!</h1></body></html>'
}
}
HINWEISE #
Privat. Foundation für Phase 0 von Issue #82 / #83. Benötigt Microsoft Edge WebView2 Runtime - Prüfung erfolgt automatisch über Test-EulWebView2Runtime.