Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
WPF apps worden uitgevoerd op .NET, maar de Windows Presentation Foundation XAML-stack gebruiken. WinUI 3 is de moderne vervanging. De belangrijkste uitdaging voor AI-migratie is dat WPF gebruikmaakt van System.Windows.* naamruimten terwijl WinUI 3 gebruikmaakt van Microsoft.UI.Xaml.*, en veel besturingselementen en venster-API's gerichte vervangingen nodig hebben in plaats van eenvoudige zoek- en vervanging.
De WPF-migratievaardigheid installeren
gh copilot plugin install winui@awesome-copilot
API-substitutietabel
Namespaces
| WPF | WinUI 3 |
|---|---|
System.Windows.* |
Microsoft.UI.Xaml.* |
System.Windows.Controls.* |
Microsoft.UI.Xaml.Controls.* |
System.Windows.Media.* |
Microsoft.UI.Xaml.Media.* |
System.Windows.Data.* |
Microsoft.UI.Xaml.Data.* |
System.Windows.Input.* |
Microsoft.UI.Input.* |
Controles
| WPF | WinUI 3 | Aantekeningen |
|---|---|---|
Window |
Microsoft.UI.Xaml.Window |
Verschillende API-surface |
Grid, StackPanel, Canvas |
Ongewijzigd | Dezelfde namen |
TextBox, Button, CheckBox |
Ongewijzigd | Dezelfde namen, WinUI-stijl |
ListBox / ListView |
ListView |
Gebruiken ItemsView voor nieuwe code |
DataGrid |
DataGrid (CommunityToolkit) |
CommunityToolkit.WinUI.Controls.DataGrid toevoegen |
TabControl |
TabView |
Verschillende API |
Menu / MenuItem |
MenuBar / MenuBarItem |
|
ToolBar |
CommandBar |
|
RichTextBox |
RichEditBox |
|
WebBrowser |
WebView2 |
Verschillende API, asynchroon |
Draadbewerking
| WPF | WinUI 3 |
|---|---|
Dispatcher.Invoke(...) |
DispatcherQueue.TryEnqueue(...) |
Dispatcher.BeginInvoke(...) |
DispatcherQueue.TryEnqueue(DispatcherQueuePriority.Low, ...) |
Application.Current.Dispatcher |
this.DispatcherQueue |
Vensterbeheer en DPI
| WPF | WinUI 3 |
|---|---|
Window.WindowState |
AppWindow.Presenter (gebruik OverlappedPresenter) |
SystemParameters.WorkArea |
DisplayArea.GetFromWindowId(...) |
PresentationSource.FromVisual() |
WinRT.Interop.WindowNative.GetWindowHandle(window) |
Gegevensbinding
| WPF | WinUI 3 |
|---|---|
INotifyPropertyChanged |
Ongewijzigd |
ObservableCollection<T> |
Ongewijzigd |
{Binding} |
{x:Bind} voorkeur (compileertijd) |
DependencyProperty |
Ongewijzigd |
IValueConverter |
Ongewijzigd |
Bronnen en stijlen
| WPF | WinUI 3 |
|---|---|
ResourceDictionary |
Ongewijzigd |
StaticResource |
Ongewijzigd |
DynamicResource |
{ThemeResource} voor systeemkleuren |
SystemColors.WindowBrush |
{ThemeResource SystemFillColorSolidNeutralBrush} |
Startprompt
I'm migrating a WPF app to WinUI 3 using the Windows App SDK.
Apply these substitutions:
- System.Windows.* → Microsoft.UI.Xaml.*
- Dispatcher.Invoke / BeginInvoke → DispatcherQueue.TryEnqueue
- Window.WindowState → AppWindow with OverlappedPresenter
- PresentationSource → WinRT.Interop.WindowNative.GetWindowHandle
- DynamicResource for system colors → ThemeResource
- {Binding} → {x:Bind} where possible (compile-time binding)
- ListBox → ListView or ItemsView
- TabControl → TabView
- WebBrowser → WebView2
- DataGrid → CommunityToolkit.WinUI.Controls.DataGrid
Do not use any System.Windows.* namespaces in new code.
Do not use Dispatcher.Invoke — use DispatcherQueue.TryEnqueue.
Flag APIs without a direct WinUI 3 equivalent rather than guessing.
Wijzigingen in projectbestanden
<!-- Before (WPF) -->
<TargetFramework>net10.0-windows</TargetFramework>
<UseWPF>true</UseWPF>
<!-- After (WinUI 3) -->
<TargetFramework>net10.0-windows10.0.19041.0</TargetFramework>
<WindowsSdkPackageVersion>10.0.19041.31</WindowsSdkPackageVersion>
dotnet add package Microsoft.WindowsAppSDK
API's die niet rechtstreeks worden gemigreerd
Laat de agent deze markeren in plaats van te raden:
- WPF
Adornerlaag - geen equivalent in WinUI 3 - WPF
FlowDocument/DocumentViewer— gebruikRichEditBoxvoor bewerkbare inhoud; geen viewer-equivalent - WPF
Viewport3D: gebruik Win2D- of DirectX-interop - Air-space / HWND hosting — gebruik
SwapChainPanelof Win32 interop patronen
Verwante inhoud
- Migreren vanuit UWP
- Migreren vanuit iOS
- WinUI-agent-invoegtoepassing
- migratiehandleiding voor Windows App SDK
Windows developer