A lightweight, ViewModel-first navigation framework for .NET UI applications.
Run the same navigation concepts across: Windows · Linux · macOS · Android · iOS
Supports WPF, Avalonia and MAUI with a consistent mental model and minimal setup.
- ViewModel-first navigation
- Clean separation of concerns
- Minimal infrastructure (no heavy frameworks)
- Cross-platform core
- Fully DI and logging compatible
- Works with existing applications
👉 Want to understand how it works internally?
See Architecture & Concepts
services
.AddMvvmNav()
.WithShell<ShellWindow, ShellViewModel>()
.WithStartupNavigation<HomeViewModel>();Inject INavigationService into your ViewModels and start navigating.
👉 More detailed setup and concepts:
Getting Started & Concepts
MvvmNav uses a central Shell ViewModel that hosts:
CurrentModuleCurrentDialog
This is the composition root of your UI.
WpfNavigationHostBuilder
.Default()
.WithShell<ShellWindow, ShellViewModel>()
.WithStartupNavigation<HomeViewModel>()
.Build();
await host.StartAsync();services.AddMvvmNav()
.WithShell<ShellWindow, ShellViewModel>()
.WithStartupNavigation<HomeViewModel>();builder.Services
.AddMvvmNav()
.WithShell<ShellPage, ShellViewModel>()
.WithStartupNavigation<HomeViewModel>();await navigation.NavigateAsync<HomeViewModel>();👉 Deep dive into navigation, parameters and back stack:
Navigation Guide
Prevent navigation when needed (e.g. unsaved changes).
👉 Full guard flows and advanced scenarios:
Navigation Guards & Flow
Cross-platform sample included in the repository.
- Navigation & back stack
- Dialogs
- Guards
- Markdown help pages
👉 Walkthrough of the sample app and architecture decisions:
Sample App Guide
Actively developed – API stabilizing toward v1.
- ViewModel-first navigation
- Cross-platform core
- Navigation parameters
- Dialog integration
- Authorization / redirects
- State persistence
- Typed parameters
https://github.com/sponsors/adaxer
Apache License 2.0