Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
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
Windows developer