- WPF-UI is Windows-only. The lepoco/wpfui library targets WPF exclusively.
- Uno Platform ships Fluent-styled controls from Uno.UI 3.0+.
XamlControlsResourceslights up the Fluent look on every head. NavigationView,InfoBar, and most input controls map 1:1 to WinUI equivalents that Uno Platform implements for WASM, Skia, and MobileCard,Chip,NavigationBar, andTabBarcome from Uno Toolkit, not Uno.UI coreSnackbar,MessageBoxhelper, andFluentWindowhave no 1:1 equivalent and must be rebuilt- Mica and acrylic backdrops are Windows 11 features. They do not render on macOS, Linux, Android, iOS, or Web.
Most of your WPF-UI styling survives the port to Uno Platform because both frameworks target the Fluent design system. Uno Platform ships Fluent-styled versions of Button, TextBox, NavigationView, InfoBar, and more out of the box, and Uno Toolkit covers additions like Card and Chip. This guide maps each WPF-UI control to its closest Uno Platform equivalent, flags what you rebuild, and shows how to switch the Fluent theme pack on.
Why This Migration Is Easier Than You Think
WPF-UI brings "the Fluent experience in your known and loved WPF framework." That design choice is what makes the Uno Platform port straightforward: both stacks target the same Fluent visual language. Once you add XamlControlsResources to your resources, the WinUI Fluent look becomes the default on every platform Uno renders to.
For a developer coming from lepoco/wpfui, the mental model does not change: you still write Fluent XAML, you just drop the ui: prefix and reach for WinUI or Uno Toolkit controls instead. Cross-platform reach is the deliverable.
The Control Mapping Table: WPF-UI to Uno Platform
| WPF-UI Control | Uno Platform Target | Package | Notes |
|---|---|---|---|
ui:Button | Button (Fluent) | Uno.UI | 1:1 after enabling XamlControlsResources |
ui:TextBox | TextBox | Uno.UI | 1:1 |
ui:NumberBox | NumberBox | Uno.UI (WinUI) | 1:1 |
ui:NavigationView | NavigationView | Uno.UI (WinUI) | Implemented for WASM, Skia, and Mobile |
ui:InfoBar | InfoBar | Uno.UI (WinUI) | 1:1. Severity, IsOpen, ActionButton all supported |
ui:InfoBadge | InfoBadge | Uno.UI (WinUI) | Value, IconSource, and TemplateSettings supported |
ui:Card, ui:CardAction, ui:CardControl | utu:Card / utu:CardContentControl | Uno Toolkit | Header/sub-header/content properties. Collapse WPF-UI card variants onto Card + templates. |
ui:TitleBar | TitleBar (WinUI) or custom region | Uno.UI | On Windows, use WinUI TitleBar. On other heads, draw your own. |
ui:FluentWindow | No direct equivalent | Uno.UI Window + SystemBackdrop | Use MicaBackdrop on Windows. Other platforms fall back to solid color. |
ui:Snackbar | No direct equivalent | InfoBar or custom | Build a transient wrapper around InfoBar for auto-dismiss. |
ui:MessageBox | ContentDialog | Uno.UI (WinUI) | Wrap ContentDialog in a helper for MessageBox.Show() ergonomics. |
ui:BreadcrumbBar | BreadcrumbBar | Uno.UI (WinUI) | ItemsSource, ItemTemplate, ItemClicked supported |
ui:AutoSuggestBox | AutoSuggestBox | Uno.UI (WinUI) | Text, QueryIcon, QuerySubmitted, SuggestionChosen |
ui:TabView | TabView or utu:TabBar | Uno.UI / Uno Toolkit | TabView for documents, TabBar for bottom/primary navigation |
ui:Flyout | Flyout | Uno.UI (WinUI) | 1:1 |
ui:ContentDialog | ContentDialog | Uno.UI (WinUI) | 1:1 |
ui:ToggleSwitch | ToggleSwitch | Uno.UI (WinUI) | 1:1 |
ui:ProgressRing | ProgressRing | Uno.UI (WinUI) | 1:1, including determinate mode |
ui:DataGrid | Community Toolkit DataGrid | Uno.UI + WCT | Behavioral port, not a 1:1 drop-in. WPF-UI DataGrid is a different implementation. |
WPF-UI's base controls (Page, ToggleButton, List) are standard XAML classes in Uno Platform and port unchanged once Fluent styles are enabled.
Lighting Up Fluent Styles in Uno Platform
WPF-UI asks you to merge ThemesDictionary and ControlsDictionary into your App.xaml. Uno Platform uses the same WinUI mechanism: add XamlControlsResources to your application resources.
<Application.Resources>
<ResourceDictionary>
<ResourceDictionary.MergedDictionaries>
<xamlControls:XamlControlsResources />
</ResourceDictionary.MergedDictionaries>
</ResourceDictionary>
</Application.Resources>For symbol icons, Uno.UI 4.7+ brings the Uno Fluent Symbols font implicitly via the Uno.Fonts.Fluent NuGet package. Reference glyphs through the SymbolThemeFontFamily resource:
<FontIcon FontFamily="{ThemeResource SymbolThemeFontFamily}"
Glyph=""/>WPF-UI bundles Fluent System Icons and cannot ship Segoe Fluent Icons because of the Microsoft EULA. Uno Platform sidesteps this by shipping its own symbols font, so the EULA workaround you may have for WPF-UI does not carry over.
Rebuilding the Three Controls That Do Not Map Directly
Snackbar
WinUI uses InfoBar for inline status messages. It does not auto-dismiss. For a WPF-UI-style transient snackbar, wrap InfoBar in a helper that sets IsOpen = true, starts a DispatcherTimer, and sets IsOpen = false when it fires. Keep the Severity-based coloring (Informational, Success, Warning, Error) so it feels consistent with WinUI.
MessageBox Helper
ContentDialog is the Uno Platform replacement. Build a static helper that mirrors the WPF-UI MessageBox API:
public static async Task<ContentDialogResult> ShowAsync(
string title, string message, XamlRoot root)
{
var dialog = new ContentDialog
{
Title = title,
Content = message,
PrimaryButtonText = "OK",
CloseButtonText = "Cancel",
XamlRoot = root
};
return await dialog.ShowAsync();
}FluentWindow / Mica Backdrop
WPF-UI's FluentWindow gives you Mica and SnapLayout integration inside WPF. On Windows, Uno Platform exposes the Windows App SDK MicaBackdrop:
public MainWindow()
{
this.InitializeComponent();
SystemBackdrop = new MicaBackdrop
{
Kind = MicaKind.BaseAlt
};
}Non-Windows fallback: Mica is a Windows 11 system-backdrop feature. Microsoft's own documentation says "Mica isn't supported on all systems. Where it's not supported, a solid color is used instead." The fallback is intentional; do not try to emulate Mica on Linux or macOS.
Resource-Key Migration
WPF-UI lets you override Fluent brushes like TextFillColorPrimaryBrush directly. In Uno Platform you reference the same WinUI theme resources (via XamlControlsResources), and you can override them using the lightweight styling pattern:
<Page.Resources>
<SolidColorBrush x:Key="InfoBarInformationalSeverityBackgroundBrush"
Color="LightBlue"/>
</Page.Resources>For Uno Toolkit controls (Card, Chip, NavigationBar, TabBar), the lightweight styling keys are documented per-control in the Toolkit docs.
When to Keep WPF-UI vs. Migrate
Keep WPF-UI If
- Your app ships only on Windows and you have no cross-platform roadmap
- You depend on SnapLayout or FluentWindow behavior tied to the Win32 HWND lifecycle
- Your DataGrid usage is heavy and WPF-UI's implementation is stable for you
Migrate to Uno Platform If
- You need macOS, Linux, Web, or mobile reach. WPF-UI is WPF-only.
- You want to keep Fluent aesthetics without writing a custom theme layer
- You are investing in a new control set and can consolidate on WinUI + Uno Toolkit instead of WPF + WPF-UI
- You want to accelerate the port with agent-driven tooling. Uno Platform ships Claude Code integration and Uno MCP servers that can scaffold pages and map controls directly from a WPF-UI source tree.
FAQ
Is WPF-UI supported cross-platform?
No. WPF-UI targets WPF, which is Windows-only.
Can I use Uno Toolkit controls alongside Fluent theming?
Yes. Uno Toolkit (Card, Chip, NavigationBar, TabBar) is designed to coexist with Fluent or Material styling.
Do I lose Mica and acrylic on non-Windows?
Yes. Mica is a Windows 11 system-backdrop feature (minimum: Windows 11 Build 22621) and falls back to a solid color everywhere else.
How do I handle WPF-UI's icon set?
Replace references with the SymbolThemeFontFamily resource backed by Uno.Fonts.Fluent. Glyph code points for the built-in symbols line up with WinUI's Symbol enum.
Does Uno Platform support NavigationView on all targets?
NavigationView is implemented for WASM, Skia, and Mobile. For mobile-first navigation ergonomics, Uno Toolkit also ships NavigationBar.
Enable Uno Platform Fluent-styled controls in your migrated app and port one screen end-to-end. Pick a screen that uses ui:NavigationView, ui:Card, and ui:InfoBar; those are the three most common WPF-UI surfaces and they all map cleanly to Uno Platform + Uno Toolkit.
- lepoco/wpfui (GitHub) →
- Uno Platform Fluent-Styled Controls →
- NavigationView Implemented Reference →
- Uno Toolkit: Card & CardContentControl →
- Uno Toolkit: NavigationBar →
- Uno Themes: Fluent Getting Started →
- Uno Fluent UI Assets →
- Mica Material (Microsoft Docs) →
- Get Started with Claude + Uno Platform →
- Uno Platform MCP Servers →
- Uno Platform for WPF Developers →
Subscribe to Our Blog
Subscribe via RSS
Back to Top