Страница вкладок Prism: не работает переход на предыдущую страницу

#xamarin #prism

#xamarin #prism

Вопрос:

У меня следующая структура страницы

  • Главная страница: страница с вкладками
    • TabPage1: страница содержимого
      • ContentPage1_1: страница содержимого
    • Страница вкладок2: страница содержимого

Это xaml главной страницы

 <TabbedPage.Children>
  <NavigationPage Title="TabPage 1" IconImageSource="icon_about">
    <x:Arguments>
      <views:TabPage1/>
    </x:Arguments>
  </NavigationPage>
  <NavigationPage Title="TabPage 2" IconImageSource="icon_feed">
    <x:Arguments>
      <views:TabPage2/>
    </x:Arguments>
  </NavigationPage>
</TabbedPage.Children>
 

В TabPage1 мы можем перейти на другую страницу ContentPage1_1. Это код viewmodel для этого

 public DelegateCommand NavigateForwardCommand { get; set; }

public TabPage1ViewModel(INavigationService navigationService)
{
  NavigateForwardCommand = new DelegateCommand(async () =>
  {
    await navigationService.NavigateAsync($"{nameof(NavigationPage)}/{nameof(ContentPage1_1)}");
  });
}
 

Эта навигация работает

В ContentPage1_1 я пытаюсь вернуться к TabPage1. Все мои попытки завершаются неудачей.

Это то, что я пробовал.

 public DelegateCommand NavigateBackwardCommand { get; set; }

public ContentPage1_1ViewModel(INavigationService navigationService)
{
  NavigateBackwardCommand = new DelegateCommand(async () =>
  {
    //await navigationService.NavigateAsync($"{nameof(ContentPage1_1)}");
    //await navigationService.NavigateAsync($"/../{nameof(TabPage1)}");
    //await navigationService.NavigateAsync($"/{nameof(MainPage)}/{nameof(NavigationPage)}/{nameof(TabPage1)}");
    //await navigationService.GoBackAsync();
    //await navigationService.GoBackToRootAsync();

  });
}
 

GoBackAsync ничего не делает. Все остальные теряют либо вкладки, либо правильные панели навигации.

Навигация со стрелками на панели навигации работает!

Как я могу вернуться на предыдущую страницу в моей вкладке?

Комментарии:

1. Вы используете Prism, но не используете навигацию Prism?

2. это часть основ навигации Prism

Ответ №1:

Это работает. В TabPage1ViewModel я изменил навигацию на

 public DelegateCommand NavigateForwardCommand { get; set; }
    
public TabPage1ViewModel(INavigationService navigationService)
{
  NavigateForwardCommand = new DelegateCommand(async () =>
  {
    await navigationService.NavigateAsync($"{nameof(ContentPage1_1)}");
  });
}
 

и удалил

 NavigationPage.HasNavigationBar="False"
 

атрибут из ContentPage1_1.xaml.

Это было все.