Skip to content

MVVM friendly library for easy navigation management in WPF & Avalonia applications

License

Notifications You must be signed in to change notification settings

Egor92/MvvmNavigation

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

MvvmNavigation

Build status Version Downloads CodeFactor GitHub contributors License Join the Gitter chat!

Перейти на русскую страницу

This library allows you to adjust navigation behavior in your WPF application and implement ViewModel-based navigation. This library completely adhere to MVVM pattern.

Contents

Usage

  1. Install NuGet package MvvmNavigation.Wpf

  2. Define navigation rules:

     public partial class App : Application
     {
         protected override void OnStartup(StartupEventArgs e)
         {
             var window = new MainWindow();
    
             //1. Create navigation manager
             var navigationManager = new NavigationManager(window);
    
             //2. Define navigation rules: register key and corresponding view and viewmodel for it
             navigationManager.Register<FirstView>("FirstKey", () => new FirstViewModel(navigationManager));
             navigationManager.Register<SecondView>("SecondKey", () => new SecondViewModel(navigationManager));
    
             //3. Display start UI
             navigationManager.Navigate("FirstKey");
    
             window.Show();
         }
     }
  3. Сall Navigate method in your ViewModel in order to switch UI

     public class FirstViewModel : ViewModelBase
     {
         private readonly INavigationManager _navigationManager;
    
         public FirstViewModel(INavigationManager navigationManager)
         {
             _navigationManager = navigationManager;
         }
    
         private void GoToSecondPage()
         {
             // Switch UI
             _navigationManager.Navigate("SecondKey");
         }
     }

    Look it in a sample

Usage with Unity

MvvmNavigation supports Unity out of the box.

  1. Install two NuGet packages
  1. Define navigation rules via UnityContainer:

     public partial class App : Application
     {
         protected override void OnStartup(StartupEventArgs e)
         {
             //1. Create Window and UnityContainer
             var mainWindow = new MainWindow();
             var unityContainer = new UnityContainer();
    
             //2. Register navigation manager
             unityContainer.RegisterNavigationManager(mainWindow);
    
             //3. Register navigation rules
             unityContainer.RegisterNavigationRule<FirstViewModel, FirstView>("FirstKey");
             unityContainer.RegisterNavigationRule<SecondViewModel, SecondView>("SecondKey");
    
             //4. Display start UI
             var navigationManager = unityContainer.Resolve<INavigationManager>();
             navigationManager.Navigate("FirstKey");
    
             window.Show();
         }
     }
  2. Сall Navigate method in your ViewModel in order to switch UI

     public class FirstViewModel : ViewModelBase
     {
         private readonly INavigationManager _navigationManager;
    
         public FirstViewModel(INavigationManager navigationManager)
         {
             _navigationManager = navigationManager;
         }
    
         private void GoToSecondPage()
         {
             // Switch UI
             _navigationManager.Navigate("SecondKey");
         }
     }

Samples

See all samples here.