mrepoDev / MvvmNavigation

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

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

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.

About

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

License:MIT License


Languages

Language:C# 99.7%Language:PowerShell 0.3%