Eseguire la migrazione di modelli di app macchine virtuali Windows a WinUI 3

WinUI 3 condivide molti concetti XAML con macchine virtuali Windows ed è ottimizzato per le esperienze Windows moderne. La maggior parte dei modelli macchine virtuali Windows ha equivalenti diretti in WinUI 3. In alcune aree WinUI 3 introduce un approccio migliorato che sostituisce un modello meno recente e in alcuni casi le funzionalità sono ancora in fase di sviluppo attivo.

In questo argomento vengono mappati i modelli di macchine virtuali Windows comuni agli equivalenti winUI 3, in modo da poter pianificare la migrazione.

Suggerimento

Per indicazioni generali macchine virtuali Windows + SDK per app di Windows, vedere Usare il SDK per app di Windows in un'app macchine virtuali Windows.

Controlli

La maggior parte dei controlli macchine virtuali Windows ha equivalenti diretti in WinUI 3. La tabella seguente illustra i controlli in cui la mappatura non è uno-a-uno.

controllo macchine virtuali Windows Equivalente a WinUI 3 Note
DataGrid Nessun equivalente di prima parte WinUI 3 non includeva un DataGrid predefinito. WinUI.TableView gestito dalla community è un'opzione. Valutare i progetti della community in base ai requisiti di supporto e manutenzione.
Ribbon CommandBar / Community Toolkit Labs Prendere in considerazione CommandBar e CommandBarFlyout per scenari in stile barra degli strumenti. Un controllo Ribbon è disponibile anche in Community Toolkit Labs (sperimentale).
StatusBar InfoBar + layout personalizzato Usa InfoBar per la messaggistica di stato o aggiungi un'area del piè di pagina dedicata al layout.
FlowDocumentReader / FlowDocumentScrollViewer RichTextBlock Usa RichTextBlock per la visualizzazione rtf di sola lettura. WinUI 3 adotta un approccio diverso per documentare il contenuto più adatto agli scenari di app moderni.
PasswordBox con SecureString PasswordBox PasswordBox di WinUI 3 fornisce la maschera password. SecureString è deprecato in .NET 5+; l'approccio consigliato consiste nel ridurre al minimo la durata delle credenziali in memoria usando i modelli ReadOnlySpan<char>.
WebBrowser WebView2 WebView2 usa il motore di Microsoft Edge (Chromium) moderno ed è l'approccio consigliato per incorporare contenuto Web in tutti i tipi di app desktop.

Funzionalità XAML

XAML winUI 3 usa gli stessi concetti di base di macchine virtuali Windows: dizionari di risorse, stili, data binding ed estensioni di markup funzionano in modo analogo. Alcuni modelli specifici di macchine virtuali Windows si sono evoluti in alternative più componibili migliorate.

macchine virtuali Windows funzionalità Approccio WinUI 3 Note
DataTrigger / MultiTrigger Comportamenti (Community Toolkit) WinUI 3 usa comportamenti associati anziché trigger inline. Il pacchetto Comportamenti XAML supporta DataTriggerBehavior, EventTriggerBehaviore altro ancora. I comportamenti sono più componibili e testabili unitariamente rispetto ai trigger macchine virtuali Windows.
DynamicResource ThemeResource ThemeResource fornisce la ricerca delle risorse di runtime e risponde automaticamente alle modifiche del tema (chiaro, scuro, contrasto elevato). Usare StaticResource per i valori che non cambiano mai in fase di esecuzione.
MultiBinding / PriorityBinding Convertitori o x:Bind Usa un convertitore multivalore con associazioni singole oppure usa x:Bind con una proprietà calcolata nel tuo modello di vista. x:Bind è compilato e a tipizzazione sicura, che lo rende più efficiente di Binding.
Style con BasedOn ✅ Sostenuto Ereditarietà dello stile con BasedOn funziona in WinUI 3.
Stili impliciti ✅ Sostenuto Gli stili impliciti del dizionario risorse (stili senza x:Key) funzionano come previsto.
AdornerLayer Approccio di sovrapposizione personalizzato WinUI 3 non ha alcun livello decorativo equivalente. Usa una Canvas sovrapposizione o Grid nel layout per ottenere effetti visivi simili: questo approccio è più esplicito e più facile da ragionare.

Threading e invio

modello macchine virtuali Windows Equivalente a WinUI 3 Note
Dispatcher.Invoke / BeginInvoke DispatcherQueue.TryEnqueue WinUI 3 usa DispatcherQueue. Il modello asincrono è await DispatcherQueue.EnqueueAsync(...) utilizzando l'estensione Community Toolkit.
Application.Current.Dispatcher DispatcherQueue.GetForCurrentThread() Acquisire l'oggetto DispatcherQueue in fase di costruzione nel thread dell'interfaccia utente e archiviarlo per usarlo in un secondo momento nei thread in background.
BackgroundWorker Task / async-await I modelli asincroni moderni .NET sono l'approccio giusto in WinUI 3. Task, CancellationTokene IProgress<T> coprono tutti gli BackgroundWorker scenari e si integrano naturalmente con x:Bind.

Modello di app e ciclo di vita

macchine virtuali Windows concetto Equivalente a WinUI 3 Note
Application.Startup / Exit Eventi App.OnLaunched / Window.Closed WinUI 3 usa OnLaunched in App.xaml.cs come punto di ingresso. L'disinstallazione per finestra viene gestita in Window.Closed.
Application.Current.MainWindow La tua Window istanza Mantieni un riferimento all'istanza della finestra in App.xaml.cs ed esponilo come proprietà.
Window Sottoclassi Personalizzazione di AppWindow Le finestre WinUI 3 vengono personalizzate tramite AppWindow (barra del titolo, presentatore, modalità sovrapposte/schermo intero/sovrimpressione compatta) anziché tramite subclassing. Vedi Gestire le finestre delle app.
SystemParameters DisplayArea / UISettings Le proprietà di visualizzazione del sistema sono disponibili tramite DisplayArea e UISettings.

Risorse e localizzazione

modello macchine virtuali Windows Equivalente a WinUI 3 Note
.resx file di risorse .resw + ResourceLoader WinUI 3 utilizza i file .resw e l'API ResourceLoader. .NET Upgrade Assistant può automatizzare gran parte di questa conversione.
x:Static estensione di markup x:Bind a una proprietà statica Utilizzare x:Bind con una proprietà statica o un accessor singleton. x:Bind viene compilato e produce messaggi di errore più chiari rispetto a x:Static.
Dizionari di risorse combinati ✅ Sostenuto ResourceDictionary.MergedDictionaries funziona in WinUI 3.
Dizionari di risorse specifici dell'argomento ✅ Sostenuto ResourceDictionary.ThemeDictionaries è il meccanismo WinUI 3 per le risorse per tema e si integra con il cambio automatico in modalità scura/chiara.

Stampa

macchine virtuali Windows funzionalità Stato WinUI 3 Note
PrintDialog / PrintDocument PrintManager Il supporto completo per la stampa è disponibile tramite PrintManager. Vedi Stampare dall'app.

Strumenti per sviluppatori

strumenti macchine virtuali Windows Stato WinUI 3 Note
Finestra di progettazione XAML (scheda Progettazione) Non ancora supportato La finestra di progettazione XAML Visual Studio attualmente non supporta i progetti WinUI 3. XAML Ricaricamento rapido è supportato ed è il modo consigliato per scorrere il layout e gli stili senza arrestare il debugger.
Blend per Visual Studio ⚠️ Supporto limitato Blend viene fornito con Visual Studio e può aprire progetti WinUI 3. La struttura del documento XAML è funzionale, ma la visualizzazione Progettazione non è disponibile per WinUI 3.

Vedere anche