Show Eul Web View2 Dialog
Zuletzt geändert: 23.05.2026 10:43

Übersicht

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:

  1. 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.

  2. 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.