MR
Mayur Rathi
@github
⭐ 34.1k GitHub stars

Winui3-Migration-Guide

Winui3-Migration-Guide是一款code方向的AI技能,核心价值是UWP-to-WinUI 3 migration reference,可用于解决开发者在code领域的实际问题,帮助用户提升效率、自动化重复任务或优化工作流。

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)

Last verified on: 2026-05-30
mkdir -p ./skills/winui3-migration-guide && curl -sfL https://raw.githubusercontent.com/github/awesome-copilot/main/skills/winui3-migration-guide/SKILL.md -o ./skills/winui3-migration-guide/SKILL.md

Run in terminal / PowerShell. Requires curl (Unix) or PowerShell 5+ (Windows).

Skill Content

# WinUI 3 Migration Guide


Use this skill when migrating UWP apps to WinUI 3 / Windows App SDK, or when verifying that generated code uses correct WinUI 3 APIs instead of legacy UWP patterns.


---


Namespace Changes


All `Windows.UI.Xaml.*` namespaces move to `Microsoft.UI.Xaml.*`:


| UWP Namespace | WinUI 3 Namespace |

|--------------|-------------------|

| `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` (for dispatcher) |


---


Top 3 Most Common Copilot Mistakes


1. ContentDialog Without XamlRoot


csharp
// ❌ WRONG — Throws InvalidOperationException in WinUI 3
var dialog = new ContentDialog
{
    Title = "Error",
    Content = "Something went wrong.",
    CloseButtonText = "OK"
};
await dialog.ShowAsync();

csharp
// ✅ 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 Instead of ContentDialog


csharp
// ❌ WRONG — UWP API, not available in WinUI 3 desktop
var dialog = new Windows.UI.Popups.MessageDialog("Are you sure?", "Confirm");
await dialog.ShowAsync();

csharp
// ✅ 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 Instead of DispatcherQueue


csharp
// ❌ WRONG — CoreDispatcher does not exist in WinUI 3
await Dispatcher.RunAsync(CoreDispatcherPriority.Normal, () =>
{
    StatusText.Text = "Done";
});

csharp
// ✅ CORRECT — Use DispatcherQueue
DispatcherQueue.TryEnqueue(() =>
{
    StatusText.Text = "Done";
});

// With priority:
DispatcherQueue.TryEnqueue(DispatcherQueuePriority.High, () =>
{
    ProgressBar.Value = 100;
});

---


Windowing Migration


Window Reference


csharp
// ❌ WRONG — Window.Current does not exist in WinUI 3
var currentWindow = Window.Current;

csharp
// ✅ 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

Window Management


| UWP API | WinUI 3 API |

|---------|-------------|

| `ApplicationView.TryResizeView()` | `AppWindow.Resize()` |

| `AppWindow.TryCreateAsync()` | `AppWindow.Create()` |

| `AppWindow.TryShowAsync()` | `AppWindow.Show()` |

| `AppWindow.TryConsolidateAsync()` | `AppWindow.Destroy()` |

| `AppWindow.RequestMoveXxx()` | `AppWindow.Move()` |

| `AppWindow.GetPlacement()` | `AppWindow.Position` property |

| `AppWindow.RequestPresentation()` | `AppWindow.SetPresenter()` |


Title Bar


| UWP API | WinUI 3 API |

|---------|-------------|

| `CoreApplicationViewTitleBar` | `AppWindowTitleBar` |

| `CoreApplicationView.TitleBar.ExtendViewIntoTitleBar` | `AppWindow.TitleBar.ExtendsContentIntoTitleBar` |


---


Dialogs and Pickers Migration


File/Folder Pickers


csharp
// ❌ WRONG — UWP style, no window handle
var picker = new FileOpenPicker();
picker.Fil

🎯 Best For

  • UI designers
  • Product designers
  • Claude users
  • GitHub Copilot users
  • Software engineers

💡 Use Cases

  • Generating component mockups
  • Creating design system tokens
  • Code quality improvement
  • Best practice enforcement

📖 How to Use This Skill

  1. 1

    Install the Skill

    Copy the install command from the Terminal tab and run it. The SKILL.md file downloads to your local skills directory.

  2. 2

    Load into Your AI Assistant

    Open Claude or GitHub Copilot and reference the skill. Paste the SKILL.md content or use the system prompt tab.

  3. 3

    Apply Winui3-Migration-Guide to Your Work

    Open your project in the AI assistant and ask it to apply the skill. Start with a small module to verify the output quality.

  4. 4

    Review and Refine

    Review AI suggestions before committing. Run tests, check for regressions, and iterate on the skill output.

❓ Frequently Asked Questions

Does this work with Figma?

Some design skills integrate with Figma plugins. Check the Works With section for supported tools.

Is Winui3-Migration-Guide compatible with Cursor and VS Code?

Yes — this skill works with any AI coding assistant including Cursor, VS Code with Copilot, and JetBrains IDEs.

Do I need specific dependencies for Winui3-Migration-Guide?

Check the install command and Works With section. Most code skills only require the AI assistant and your codebase.

How do I install Winui3-Migration-Guide?

Copy the install command from the Terminal tab and run it. The skill downloads to ./skills/winui3-migration-guide/SKILL.md, ready to use.

Can I customize this skill for my team?

Absolutely. Edit the SKILL.md file to add team-specific instructions, examples, or workflows.

⚠️ Common Mistakes to Avoid

Skipping usability testing

AI-generated designs should be validated with real users before development.

Skipping validation

Always test AI-generated code changes, even for simple refactors.

Missing dependency updates

Check if the skill requires updated dependencies or new packages.

🔗 Related Skills