MVVM friendly library for easy navigation management in WPF & Avalonia applications
MIT License
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 из коробки.
Определите привала навигации через 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");
}
}
Все примеры доступны здесь.