Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
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
Windows developer