Migrieren von WPF App-Mustern zu WinUI 3

WinUI 3 teilt viele XAML-Konzepte mit WPF und ist für moderne Windows Umgebungen optimiert. Die meisten WPF Muster verfügen über direkte Entsprechungen in WinUI 3. In einigen Bereichen führt WinUI 3 einen verbesserten Ansatz ein, der ein älteres Muster ersetzt, und in einigen Fällen befinden sich Features noch in der aktiven Entwicklung.

In diesem Thema werden allgemeine WPF Muster ihren WinUI 3-Entsprechungen zugeordnet, damit Sie Ihre Migration planen können.

Tipp

Allgemeine WPF + Windows App SDK Anleitungen finden Sie unter Use the Windows App SDK in a WPF app.

Bedienelemente

Die meisten WPF Steuerelemente verfügen über direkte Entsprechungen in WinUI 3. In der folgenden Tabelle werden Steuerelemente behandelt, bei denen die Zuordnung nicht 1:1 ist.

WPF-Steuerelement WinUI 3-Entsprechung Hinweise
DataGrid Kein Erstanbieter-Äquivalent WinUI 3 enthält kein integriertes DataGrid. Die von der Community verwaltete WinUI.TableView ist eine Option. Bewerten Sie Communityprojekte basierend auf Ihren Support- und Wartungsanforderungen.
Ribbon CommandBar / Community Toolkit Labs Erwägen Sie CommandBar und CommandBarFlyout für Szenarien im Symbolleistenstil. Ein Ribbon-Steuerelement ist auch in Community Toolkit Labs (experimentell) verfügbar.
StatusBar InfoBar + benutzerdefiniertes Layout Verwenden Sie die Infoleiste für Statusnachrichten, oder fügen Sie Ihrem Layout einen dedizierten Fußzeilenbereich hinzu.
FlowDocumentReader / FlowDocumentScrollViewer RichTextBlock Verwenden Sie RichTextBlock für die schreibgeschützte Rich-Text-Anzeige. WinUI 3 verwendet einen anderen Ansatz für Dokumentinhalte, die besser für moderne App-Szenarien geeignet sind.
PasswordBox mit SecureString PasswordBox WinUI 3's PasswordBox bietet Kennwortmasken. SecureString ist in .NET 5+ veraltet. Der empfohlene Ansatz besteht darin, zu minimieren, wie lange Anmeldeinformationen im Arbeitsspeicher mit ReadOnlySpan<char>Mustern gespeichert werden.
WebBrowser WebView2 WebView2 verwendet die moderne Microsoft Edge (Chromium) Engine und ist der empfohlene Ansatz zum Einbetten von Webinhalten für alle Desktop-App-Typen.

XAML-Features

WinUI 3 XAML verwendet dieselben Kernkonzepte wie WPF – Ressourcenwörterbücher, Stile, Datenbindung und Markuperweiterungen funktionieren alle ähnlich. Einige WPF-spezifischen Muster haben sich zu verbesserten, besser zusammensetzbaren Alternativen entwickelt.

WPF-Funktion WinUI 3-Ansatz Hinweise
DataTrigger / MultiTrigger Behaviors (Community Toolkit) WinUI 3 verwendet angefügte Verhaltensweisen anstelle von Inlinetriggern. Das XAML Behaviors-Paket unterstützt DataTriggerBehavior, EventTriggerBehaviorund vieles mehr. Verhaltensweisen sind kompositorierbarer und komponententestfähiger als WPF Trigger.
DynamicResource ThemeResource ThemeResource stellt die Laufzeitressourcensuche bereit und reagiert automatisch auf Designänderungen (hell, dunkel, hoher Kontrast). Verwenden Sie StaticResource, um Werte zu definieren, die sich zur Laufzeit nie ändern.
MultiBinding / PriorityBinding Konverter oder x:Bind Verwenden Sie einen Multi-Value-Konverter mit einzelnen Bindungen oder x:Bind mit einer berechneten Eigenschaft in Ihrem Ansichtsmodell. x:Bind ist kompiliert und typsicher, wodurch sie leistungsfähiger als Binding.
Style mit BasedOn ✅ Unterstützt Formatvererbung mit BasedOn funktioniert in WinUI 3.
Implizite Formatvorlagen ✅ Unterstützt Implizite Stile im Ressourcenwörterbuch (Stile ohne x:Key) funktionieren wie erwartet.
AdornerLayer Benutzerdefinierter Überlagerungsansatz WinUI 3 hat keine Entsprechung für die Adorner-Schicht. Verwenden Sie eine Canvas oder Grid Überlagerung in Ihrem Layout, um ähnliche visuelle Dekorationseffekte zu erzielen – dieser Ansatz ist expliziter und besser nachvollziehbar.

Threading und Dispatching

WPF Muster WinUI 3-Entsprechung Hinweise
Dispatcher.Invoke / BeginInvoke DispatcherQueue.TryEnqueue WinUI 3 verwendet DispatcherQueue. Das asynchrone Muster wird mit Hilfe der await DispatcherQueue.EnqueueAsync(...) Community Toolkit-Erweiterung verwendet.
Application.Current.Dispatcher DispatcherQueue.GetForCurrentThread() Erfassen Sie DispatcherQueue zum Zeitpunkt der Erstellung im Benutzeroberflächen-Thread und speichern Sie es für die spätere Verwendung in Hintergrundthreads.
BackgroundWorker Task / async-await Moderne .NET asynchrone Muster sind der richtige Ansatz in WinUI 3. Task, CancellationToken und IProgress<T> decken alle BackgroundWorker Szenarien ab und integrieren sich nahtlos mit x:Bind.

App-Modell und Lebenszyklus

WPF Konzept WinUI 3-Entsprechung Hinweise
Application.Startup / Exit Ereignisse App.OnLaunched / Window.Closed WinUI 3 verwendet OnLaunched in App.xaml.cs als Einstiegspunkt. Der Abriss pro Fenster wird in Window.Closedbehandelt.
Application.Current.MainWindow Ihre Window Instanz Behalten Sie einen Verweis auf Ihre Fensterinstanz in App.xaml.cs und exponieren Sie ihn als Eigenschaft.
Window Unterklassen AppWindow-Anpassung WinUI 3-Fenster werden durch AppWindow (Titelleiste, Presenter, überlappende/Vollbild-/kompakte Überlagerungsmodi) anstatt durch Subklassifizierung angepasst. Siehe Verwalten von App-Fenstern.
SystemParameters DisplayArea / UISettings Systemanzeigeeigenschaften sind über DisplayArea und UISettings verfügbar.

Ressourcen und Lokalisierung

WPF Muster WinUI 3-Entsprechung Hinweise
.resx Ressourcendateien .resw + ResourceLoader WinUI 3 verwendet .resw Dateien und die ResourceLoader-API . Der .NET Upgrade-Assistent kann einen Großteil dieser Konvertierung automatisieren.
x:Static Markuperweiterung x:Bind zu einer statischen Eigenschaft Verwenden Sie x:Bind mit einer statischen Eigenschaft oder einem Singleton-Accessor. x:Bind wird kompiliert und erzeugt klarere Fehlermeldungen als x:Static.
Zusammengeführte Ressourcenwörterbücher ✅ Unterstützt ResourceDictionary.MergedDictionaries arbeitet in WinUI 3.
Themaspezifische Ressourcenwörterbücher ✅ Unterstützt ResourceDictionary.ThemeDictionaries ist der WinUI 3-Mechanismus für themenbezogene Ressourcen und integriert sich nahtlos in die automatische Umschaltung zwischen den dunklen und hellen Modi.

Druck

WPF-Funktion WinUI 3-Status Hinweise
PrintDialog / PrintDocument PrintManager Die vollständige Unterstützung für den Druckvorgang ist über PrintManager verfügbar. Siehe "Drucken aus Ihrer App".

Entwicklertools

WPF-Tooling WinUI 3-Status Hinweise
XAML-Designer (Registerkarte "Entwurf") Noch nicht unterstützt Der Visual Studio XAML-Designer unterstützt derzeit keine WinUI 3-Projekte. XAML-Hot Reload wird unterstützt und ist die empfohlene Möglichkeit zum Durchlaufen von Layout und Formatvorlagen, ohne den Debugger zu beenden.
Blend für Visual Studio ⚠| Eingeschränkter Support Blend wird mit Visual Studio ausgeliefert und kann WinUI 3-Projekte öffnen. Die XAML-Dokumentgliederung ist funktionsfähig, aber die Entwurfsansicht ist für WinUI 3 nicht verfügbar.

Siehe auch