#xamarin #prism
#xamarin #prism
Вопрос:
У меня следующая структура страницы
- Главная страница: страница с вкладками
- TabPage1: страница содержимого
- ContentPage1_1: страница содержимого
- Страница вкладок2: страница содержимого
- TabPage1: страница содержимого
Это 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.
Это было все.