Migrar padrões de aplicação WPF para WinUI 3

O WinUI 3 partilha muitos conceitos de XAML com o WPF e está otimizado para experiências modernas no Windows. A maioria dos padrões WPF tem equivalentes diretos no WinUI 3. Em algumas áreas, o WinUI 3 introduz uma abordagem melhorada que substitui um padrão mais antigo e, em alguns casos, funcionalidades ainda estão em desenvolvimento ativo.

Este tópico mapeia padrões comuns de WPF para os seus equivalentes no WinUI 3 para que possas planear a tua migração.

Sugestão

Para orientações gerais de WPF + SDK de Aplicações Windows, veja Usar o SDK de Aplicações Windows num projeto existente.

Controlos

A maioria dos controlos WPF tem equivalentes diretos no WinUI 3. A tabela seguinte cobre os controlos onde o mapeamento não é um para um.

Controlo WPF Equivalente ao WinUI 3 Notes
DataGrid Não há equivalente de primeira parte O WinUI 3 não inclui um DataGrid incorporado. O WinUI.TableView , mantido pela comunidade, é uma opção. Avalie projetos comunitários com base nas suas necessidades de apoio e manutenção.
Ribbon CommandBar / Laboratórios de Ferramentas Comunitárias Considere o CommandBar e o CommandBarFlyout para cenários ao estilo toolbar. Um controlo Ribbon também está disponível nos Community Toolkit Labs (experimental).
StatusBar InfoBar + layout customizado Use o InfoBar para mensagens de estado ou adicione uma área dedicada ao rodapé ao seu layout.
FlowDocumentReader / FlowDocumentScrollViewer RichTextBlock Utilize o RichTextBlock para exibição de texto enriquecido somente para leitura. O WinUI 3 adota uma abordagem diferente ao conteúdo dos documentos, mais adequada a cenários modernos de aplicações.
PasswordBox com SecureString PasswordBox O PasswordBox do WinUI 3 fornece mascaramento de palavra-passe. SecureString está obsoleto no .NET 5+; a abordagem recomendada é minimizar o tempo que as credenciais permanecem na memória usando padrões ReadOnlySpan<char>.
WebBrowser WebView2 WebView2 utiliza o motor moderno Microsoft Edge (Chromium) e é a abordagem recomendada para incorporar conteúdos web em todos os tipos de aplicações de ambiente de trabalho.

Recursos XAML

O WinUI 3 XAML utiliza os mesmos conceitos fundamentais do WPF — dicionários de recursos, estilos, ligação de dados e extensões de marcação funcionam todos de forma semelhante. Alguns padrões específicos do WPF evoluíram para alternativas melhoradas e mais composicionáveis.

Funcionalidade WPF Abordagem WinUI 3 Notes
DataTrigger / MultiTrigger Comportamentos (Kit de Ferramentas Comunitária) O WinUI 3 utiliza comportamentos associados em vez de gatilhos inline. O pacote XAML Behaviors suporta DataTriggerBehavior, EventTriggerBehavior, e mais. Os comportamentos são mais composáveis e testáveis por unidade do que os gatilhos WPF.
DynamicResource ThemeResource ThemeResource fornece pesquisa de recursos em tempo de execução e responde automaticamente às alterações de tema (claro, escuro, alto contraste). Use StaticResource para valores que nunca mudam em tempo de execução.
MultiBinding / PriorityBinding Conversores ou x:Bind Use um conversor de múltiplos valores com ligações individuais, ou use x:Bind com uma propriedade calculada no seu modelo de vista. x:Bind é compilado e seguro para tipos, o que o torna mais eficiente do que Binding.
Style com BasedOn ✅ Suportado Herança de estilo com BasedOn funciona no WinUI 3.
Estilos implícitos ✅ Suportado Os estilos implícitos do dicionário de recursos (estilos sem x:Key) funcionam como esperado.
AdornerLayer Abordagem de sobreposição personalizada WinUI 3 não tem um equivalente à camada de adorno. Use uma Canvas sobreposição ou Grid no seu layout para conseguir efeitos visuais de decoração semelhantes — esta abordagem é mais explícita e fácil de compreender.

Threading e distribuição

Padrão WPF Equivalente ao WinUI 3 Notes
Dispatcher.Invoke / BeginInvoke DispatcherQueue.TryEnqueue O WinUI 3 utiliza o DispatcherQueue. O padrão assíncrono usa a extensão Community Toolkit.
Application.Current.Dispatcher DispatcherQueue.GetForCurrentThread() Capture o DispatcherQueue no momento da construção na thread da interface do utilizador e armazena-o para uso posterior nas threads em segundo plano.
BackgroundWorker Task / async-await Os padrões assíncronos modernos de .NET são a abordagem correta no WinUI 3. Task, CancellationToken, e IProgress<T> cobrem todos os BackgroundWorker cenários e integram naturalmente com x:Bind.

Modelo da aplicação e ciclo de vida

Conceito de WPF Equivalente ao WinUI 3 Notes
Application.Startup / Exit Eventos App.OnLaunched / Window.Closed O WinUI 3 usa OnLaunched em App.xaml.cs como ponto de entrada. A desmontagem de cada janela é efetuada em Window.Closed.
Application.Current.MainWindow A sua Window instância Mantenha uma referência à instância da sua janela em App.xaml.cs e exponha-a como uma propriedade.
Window Subclassificação Personalização do AppWindow As janelas do WinUI 3 são personalizadas através de AppWindow (barra de título, modo de apresentação, modos de sobreposição/ecrã inteiro/sobreposição compacta) em vez de serem subclassificadas. Veja Gerir janelas da aplicação.
SystemParameters DisplayArea / UISettings As propriedades de visualização do sistema estão disponíveis através do DisplayArea e UISettings.

Recursos e localização

Padrão WPF Equivalente ao WinUI 3 Notes
.resx ficheiros de recursos .resw + ResourceLoader O WinUI 3 utiliza .resw ficheiros e a API do ResourceLoader . O .NET Upgrade Assistant pode automatizar grande parte desta conversão.
x:Static Extensão de marcação x:Bind para uma propriedade estática Use x:Bind com uma propriedade estática ou um acessório singleton. x:Bind é compilado e produz mensagens de erro mais claras do que x:Static.
Dicionários de recursos mesclados ✅ Suportado ResourceDictionary.MergedDictionaries funciona no WinUI 3.
Dicionários de recursos específicos por tema ✅ Suportado ResourceDictionary.ThemeDictionaries é o mecanismo do WinUI 3 para recursos por tema, e integra-se com a troca automática de modos escuro/claro.

Impressão

Funcionalidade WPF Estado do WinUI 3 Notes
PrintDialog / PrintDocument PrintManager O suporte total à impressão está disponível através de PrintManager. Consulte Imprimir a partir da sua aplicação.

Ferramentas para desenvolvedores

Ferramentas WPF Estado do WinUI 3 Notes
XAML Designer (separador Design) Ainda não suportado O Visual Studio XAML Designer atualmente não suporta projetos WinUI 3. XAML Hot Reload é compatível e é a forma recomendada de iterar sobre o layout e os estilos sem parar o depurador.
Blend para Visual Studio ⚠️ Apoio limitado O Blend vem com o Visual Studio e pode abrir projetos WinUI 3. O Esboço do Documento XAML é funcional, mas o modo de Design não está disponível para WinUI 3.

Consulte também