Перейти на русскую страницу
This library allows you to adjust navigation behavior in your WPF application and implement ViewModel-based navigation. This library completely adhere to MVVM pattern.
-
Install NuGet package MvvmNavigation.Wpf
-
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(); } }
-
С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
MvvmNavigation supports Unity out of the box.
- Install two NuGet packages
-
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(); } }
-
С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"); } }
See all samples here.