Go to english page
Данная библиотека позволяет настраивать поведение навигации вашего WPF приложения и реализовать навигацию на уровне слоя ViewModel. Библиотека полностью придерживается паттерна MVVM.
-
Установите NuGet пакет MvvmNavigation.Wpf
-
Определите привала навигации:
public partial class App : Application { protected override void OnStartup(StartupEventArgs e) { var window = new MainWindow(); //1. Создайте менеджер навигации var navigationManager = new NavigationManager(window); //2. Определите правила навигации: зарегистрируйте ключ (строку) с соответствующими View и ViewModel для него navigationManager.Register<FirstView>("FirstKey", () => new FirstViewModel(navigationManager)); navigationManager.Register<SecondView>("SecondKey", () => new SecondViewModel(navigationManager)); //3. Отобразите стартовый UI navigationManager.Navigate("FirstKey"); window.Show(); } }
-
Вызовите метод Navigate в вашей ViewModel, чтобы сменить UI
public class FirstViewModel : ViewModelBase { private readonly INavigationManager _navigationManager; public FirstViewModel(INavigationManager navigationManager) { _navigationManager = navigationManager; } private void GoToSecondPage() { // Сменить интерфейс _navigationManager.Navigate("SecondKey"); } }
Пример доступен здесь
MvvmNavigation поддерживает Unity из коробки.
- Установите 2 NuGet пакета:
-
Определите привала навигации через UnityContainer:
public partial class App : Application { protected override void OnStartup(StartupEventArgs e) { //1. Создайте Window и UnityContainer var mainWindow = new MainWindow(); var unityContainer = new UnityContainer(); //2. Зарегистрируйте менеджер навигации unityContainer.RegisterNavigationManager(mainWindow); //3. Определите правила навигации unityContainer.RegisterNavigationRule<FirstViewModel, FirstView>("FirstKey"); unityContainer.RegisterNavigationRule<SecondViewModel, SecondView>("SecondKey"); //4. Отобразите стартовый UI var navigationManager = unityContainer.Resolve<INavigationManager>(); navigationManager.Navigate("FirstKey"); window.Show(); } }
-
Вызовите метод Navigate в вашей ViewModel, чтобы сменить UI
public class FirstViewModel : ViewModelBase { private readonly INavigationManager _navigationManager; public FirstViewModel(INavigationManager navigationManager) { _navigationManager = navigationManager; } private void GoToSecondPage() { // Сменить интерфейс _navigationManager.Navigate("SecondKey"); } }
Все примеры доступны здесь.