Skip to content

research: evaluate lepoco/wpfui as ModernWpfUI replacement (ARCH-001) #462

Description

@laurentiu021

Context

ModernWpfUI 0.9.6 is unmaintained (last update 2022). Evaluate lepoco/wpfui as a replacement.

Findings

Library Overview

  • Stars: ~9.4k, actively maintained
  • Latest release: v4.3.0 (May 2026)
  • License: MIT
  • .NET 9 support: Yes (since v4.0.0; .NET 10 in v4.1.0)
  • Fluent Design: Windows 11 Mica backdrop, Snap Layout, WinUI 3-style controls

Pros

  • Actively maintained with regular releases
  • Full .NET 9/.NET 10 support
  • Windows 11 native look (Mica, acrylic, rounded corners)
  • Built-in DI/hosting support (compatible with our Microsoft.Extensions.DependencyInjection pattern)
  • Modern controls not in ModernWpfUI (NavigationView, NumberBox, InfoBar, Snackbar)
  • Large community (9.4k stars)

Cons / Risks

  • No official migration guide from ModernWpfUI
  • Navigation model is opinionated (page-based NavigationView) — may conflict with sidebar tabs approach
  • Theme system modifies base WPF elements — possible clash with custom styles
  • 405 open issues on GitHub (some edge cases)
  • Breaking changes between major versions (v3 → v4 had API changes)

Breaking Changes Expected

Area ModernWpfUI (current) WPF-UI (target)
XAML namespace xmlns:ui="http://schemas.modernwpf.com/2019" xmlns:ui="http://schemas.lepo.co/wpfui/2022/xaml"
Theme resources <ui:ThemeResources/> <ui:ThemesDictionary Theme="Dark"/>
Controls resources <ui:XamlControlsResources/> <ui:ControlsDictionary/>
Window style WindowHelper.UseModernWindowStyle FluentWindow base class or WindowBackdropType

Migration Effort: Small

Our ModernWpfUI usage is minimal (3 touchpoints):

  1. App.xaml — ThemeResources + XamlControlsResources (2 lines)
  2. MainWindow.xaml — WindowHelper.UseModernWindowStyle (1 line)
  3. Namespace declarations in ~4 files

We have a fully custom design system that overrides most defaults. Migration is essentially: swap NuGet, change namespaces, update 2 resource lines, update window style.

Estimated time: 1–2 hours including testing.

Recommendation: Migrate

Risk is low (tiny ModernWpfUI surface area). Benefits: continued maintenance, .NET 9/10 support, modern Fluent controls available. Staying on 0.9.6 accumulates compatibility debt.

Next Steps

  • Create branch feat/wpfui-migration
  • Swap NuGet package
  • Update App.xaml theme/resources
  • Update MainWindow to FluentWindow or equivalent
  • Test all views for visual regressions

Activity

  1. coderabbitai commented on May 20, 2026

    @coderabbitai
    ⚠️ Possible Duplicate Issue(s)
    🔗 Related PRs

    #291 - feat!: migrate to .NET 9 + fix DI cross-talk + minor fixes [merged]
    #454 - chore: migrate P/Invoke declarations to [LibraryImport] (MODERN-002) [closed]


    📝 Issue Planner

    Check the box below or use the @coderabbitai plan command to generate an implementation plan and prompts that you can use with your favorite coding assistant.

    • Create Plan

    🧪 Issue enrichment is currently in open beta.

    You can configure auto-planning by selecting labels in the issue_enrichment configuration.

    To disable automatic issue enrichment, add the following to your .coderabbit.yaml:

    issue_enrichment:
      auto_enrich:
        enabled: false

    💬 Have feedback or questions? Drop into our discord!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions