winui3-migration-guide
Ajuda seu agente a migrar código de UWP para WinUI 3. Ele mostra como as APIs antigas se traduzem em novas, com exemplos de código.
O que ela faz
Este guia ajuda desenvolvedores a atualizar seus aplicativos antigos (UWP) para uma nova versão chamada WinUI 3. Ele mostra como mudar partes do código e corrigir erros comuns.
Quando usar
- ✓Ao atualizar um aplicativo UWP para WinUI 3.
- ✓Ao verificar se o código gerado pela IA usa as partes corretas do WinUI 3.
- ✓Ao encontrar erros ao usar componentes como diálogos ou ao lidar com janelas.
Exemplo do que pedir para a IA
“Como eu mudo o namespace 'Windows.UI.Xaml' para 'Microsoft.UI.Xaml'?”
Quer saber mais? Abra as seções abaixo.
Como usar
O jeito mais fácil: copie a mensagem abaixo e cole no Claude, ChatGPT, Cursor ou outra IA. Ela lê a skill e segue as instruções.
Link da skill
Mensagem pronta para colar
Como funciona
O guia compara o código antigo (UWP) com o código novo (WinUI 3), mostrando as diferenças exatas, como mudanças de nomes e como lidar com janelas e diálogos.
Instalação
Jeito mais fácil: copie o link da skill e cole no Claude, ChatGPT ou Cursor pedindo para seguir as instruções.
No terminal (Claude Code, Codex, Cursor), na pasta do projeto:
npx skills add github/awesome-copilot --skill winui3-migration-guideOu baixe só o arquivo:
curl -L https://raw.githubusercontent.com/github/awesome-copilot/main/skills/winui3-migration-guide/SKILL.md -o SKILL.mdConteúdo técnico (SKILL.md)
Tradução do texto original do autor no GitHub. Os comandos e códigos estão como no original.
Guia de Migração do WinUI 3
Use esta habilidade ao migrar aplicativos UWP para WinUI 3 / Windows App SDK, ou ao verificar se o código gerado usa as APIs corretas do WinUI 3 em vez de padrões UWP legados.
Mudanças de Namespace
Todos os namespaces Windows.UI.Xaml.* são movidos para Microsoft.UI.Xaml.*:
| Namespace UWP | Namespace WinUI 3 |
|---|---|
Windows.UI.Xaml |
Microsoft.UI.Xaml |
Windows.UI.Xaml.Controls |
Microsoft.UI.Xaml.Controls |
Windows.UI.Xaml.Media |
Microsoft.UI.Xaml.Media |
Windows.UI.Xaml.Input |
Microsoft.UI.Xaml.Input |
Windows.UI.Xaml.Data |
Microsoft.UI.Xaml.Data |
Windows.UI.Xaml.Navigation |
Microsoft.UI.Xaml.Navigation |
Windows.UI.Xaml.Shapes |
Microsoft.UI.Xaml.Shapes |
Windows.UI.Composition |
Microsoft.UI.Composition |
Windows.UI.Input |
Microsoft.UI.Input |
Windows.UI.Colors |
Microsoft.UI.Colors |
Windows.UI.Text |
Microsoft.UI.Text |
Windows.UI.Core |
Microsoft.UI.Dispatching (para o dispatcher) |
3 Principais Erros Comuns do Copilot
1. ContentDialog sem XamlRoot
// ❌ WRONG — Throws InvalidOperationException in WinUI 3
var dialog = new ContentDialog
{
Title = "Error",
Content = "Something went wrong.",
CloseButtonText = "OK"
};
await dialog.ShowAsync();
// ✅ CORRECT — Set XamlRoot before showing
var dialog = new ContentDialog
{
Title = "Error",
Content = "Something went wrong.",
CloseButtonText = "OK",
XamlRoot = this.Content.XamlRoot // Required in WinUI 3
};
await dialog.ShowAsync();
2. MessageDialog em vez de ContentDialog
// ❌ WRONG — UWP API, not available in WinUI 3 desktop
var dialog = new Windows.UI.Popups.MessageDialog("Are you sure?", "Confirm");
await dialog.ShowAsync();
// ✅ CORRECT — Use ContentDialog
var dialog = new ContentDialog
{
Title = "Confirm",
Content = "Are you sure?",
PrimaryButtonText = "Yes",
CloseButtonText = "No",
XamlRoot = this.Content.XamlRoot
};
var result = await dialog.ShowAsync();
if (result == ContentDialogResult.Primary)
{
// User confirmed
}
3. CoreDispatcher em vez de DispatcherQueue
// ❌ WRONG — CoreDispatcher does not exist in WinUI 3
await Dispatcher.RunAsync(CoreDispatcherPriority.Normal, () =>
{
StatusText.Text = "Done";
});
// ✅ CORRECT — Use DispatcherQueue
DispatcherQueue.TryEnqueue(() =>
{
StatusText.Text = "Done";
});
// With priority:
DispatcherQueue.TryEnqueue(DispatcherQueuePriority.High, () =>
{
ProgressBar.Value = 100;
});
Migração de Janelas
Referência de Janela
// ❌ WRONG — Window.Current does not exist in WinUI 3
var currentWindow = Window.Current;
// ✅ CORRECT — Use a static property in App
public partial class App : Application
{
public static Window MainWindow { get; private set; }
protected override void OnLaunched(LaunchActivatedEventArgs args)
{
MainWindow = new MainWindow();
MainWindow.Activate();
}
}
// Access anywhere: App.MainWindow
Gerenciamento de Janela
| API UWP | API WinUI 3 |
|---|---|
ApplicationView.TryResizeView() |
AppWindow.Resize() |
AppWindow.TryCreateAsync() |
AppWindow.Create() |
AppWindow.TryShowAsync() |
AppWindow.Show() |
AppWindow.TryConsolidateAsync() |
AppWindow.Destroy() |
AppWindow.RequestMoveXxx() |
AppWindow.Move() |
AppWindow.GetPlacement() |
propriedade AppWindow.Position |
AppWindow.RequestPresentation() |
AppWindow.SetPresenter() |
Barra de Título
| API UWP | API WinUI 3 |
|---|---|
CoreApplicationViewTitleBar |
AppWindowTitleBar |
CoreApplicationView.TitleBar.ExtendViewIntoTitleBar |
AppWindow.TitleBar.ExtendsContentIntoTitleBar |
Migração de Diálogos e Seletores
Seletores de Arquivo/Pasta
// ❌ WRONG — UWP style, no window handle
var picker = new FileOpenPicker();
picker.FileTypeFilter.Add(".txt");
var file = await picker.PickSingleFileAsync();
// ✅ CORRECT — Initialize with window handle
var picker = new FileOpenPicker();
var hwnd = WinRT.Interop.WindowNative.GetWindowHandle(App.MainWindow);
WinRT.Interop.InitializeWithWindow.Initialize(picker, hwnd);
picker.FileTypeFilter.Add(".txt");
var file = await picker.PickSingleFileAsync();
Migração de Threads
| Padrão UWP | Equivalente WinUI 3 |
|---|
…
Perguntas frequentes
Por que o 'ContentDialog' não funciona mais como antes?
No WinUI 3, você precisa definir a propriedade 'XamlRoot' antes de mostrar um 'ContentDialog'. O guia mostra como fazer isso.
Onde está o 'MessageDialog'?
O 'MessageDialog' não existe mais no WinUI 3 para aplicativos de desktop. Você deve usar o 'ContentDialog' em vez disso, e o guia explica como.
Como eu atualizo o texto na tela de outro lugar?
No WinUI 3, use 'DispatcherQueue.TryEnqueue' em vez do antigo 'Dispatcher.RunAsync' para garantir que a atualização aconteça na linha de execução correta.
Detalhes
Descrição original do autor
UWP-to-WinUI 3 migration reference. Maps legacy UWP APIs to correct Windows App SDK equivalents with before/after code snippets. Covers namespace changes, threading (CoreDispatcher to DispatcherQueue), windowing (CoreWindow to AppWindow), dialogs, pickers, sharing, printing, background tasks, and the most common Copilot code generation mistakes.
repo: github/awesome-copilot
Popularidade
- Estrelas no GitHub
- 40 mil
- Posição no ranking
- #5422
- Licença
- MIT
- Atualizada em
- 15/10/2026
Comentários
- …
Mais skills deste repositório
acquire-codebase-knowledge
Ajuda seu agente a entender e documentar um projeto de código existente. É útil para novas pessoas entrarem no projeto ou para ter uma visão geral da arquitetura.
github/awesome-copilot
acreadiness-assess
Faz seu agente avaliar a prontidão de um projeto para IA e gerar um relatório. É útil para entender o quão bem um projeto está preparado para usar ferramentas de IA.
github/awesome-copilot
acreadiness-generate-instructions
Ajuda seu agente a criar instruções para ferramentas de IA baseadas em uma avaliação. É útil para melhorar a forma como a IA interage com o código e fecha lacunas identificadas.
github/awesome-copilot
acreadiness-policy
Faz seu agente ajudar a definir ou aplicar políticas para avaliação de projetos de IA. É útil para padronizar a forma como os projetos são avaliados e garantir conformidade.
github/awesome-copilot
Skills parecidas
android-clean-architecture
Faz seu agente organizar projetos Android de forma eficiente. Ele estrutura o código para facilitar a manutenção e o desenvolvimento de novos recursos.
affaan-m/ECC
compose-multiplatform-patterns
Ajuda seu agente a usar padrões do Compose Multiplatform e Jetpack Compose em projetos KMP. Ele cobre gerenciamento de estado, navegação, temas e performance. Útil para criar interfaces de usuário consistentes.
affaan-m/ECC
dart-flutter-patterns
Faz seu agente escrever código para apps Dart e Flutter. Ele usa padrões modernos para criar apps robustos e fáceis de gerenciar.
affaan-m/ECC