Я пытаюсь реализовать навигацию между двумя пользовательскими элементами управления. Делаю так: Есть класс AppController, в котором есть метод ChangeCurrentView, отвечающий за изменение UserControl в MainPage, но метод не работает:
internal class AppController {
public enum CurrentViewTypes {
NotesList,
AddEditNote,
}
public void ChangeCurrentView(CurrentViewTypes viewType) {
switch (viewType) {
case CurrentViewTypes.NotesList:
NotesListViewModel sVM = new NotesListViewModel(this);
NotesListView sV = new NotesListView();
//привязка
sV.DataContext = sVM;
//отображение
MainViewModel.CurrentView = sV;
break;
case CurrentViewTypes.AddEditNote:
AddEditViewModel eVM = new AddEditViewModel(this);
AddEditView eV = new AddEditView();
//привязка
eV.DataContext = eVM;
//отображение
MainViewModel.CurrentView = eV;
break;
default:
throw new ArgumentOutOfRangeException(nameof(viewType));
}
}
}
Запуск приложения в App.xaml.cs переопределяется следующим образом:
protected override void OnLaunched(LaunchActivatedEventArgs e) {
MainPage mainPage = new MainPage();
mainPage.DataContext = _controller.MainViewModel;
Window.Current.Content = mainPage;
Window.Current.Activate();
_controller.ChangeCurrentView(AppController.CurrentViewTypes.NotesList);
}
В MainPage.xaml это привязка:
<ContentPresenter Content = "{Binding CurrentView}" />
сделай похоже на это , мой код
Пробовал сделать по аналогии с vpf case (использовал userControl с 1 страницей) но не получается. Как правильно реализовать навигацию в проектах uvp с архитектурой mvvm? Нужно ли использовать переключение между пользовательскими элементами управления на 1 странице?





Как правило, мы используем Класс страницы и Класс фрейма для навигации в приложениях UWP. Навигация происходит между страницами с помощью метода Frame.Navigate. UserControl — это просто элемент управления, который должен отображаться внутри страницы. ViewModels используются в качестве DataContext для разных страниц.
Кроме того, вам не нужно переопределять метод onlaunch, если вы не хотите изменить стартовую страницу. А если вы хотите изменить стартовую страницу, вам просто нужно изменить параметр rootFrame.Navigate.
Я предлагаю вам начать с базовой навигации в UWP здесь: Реализовать навигацию между двумя страницами.