Prism TabbedPage:无法导航回上一页
Prism TabbedPage: Navigation back to a previous page does not work
我有以下页面结构
- 主页:TabbedPage
- TabPage1:内容页
- ContentPage1_1:内容页
- TabPage2:内容页
这是主页的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。这就是视图模型的代码
public DelegateCommand NavigateForwardCommand { get; set; }
public TabPage1ViewModel(INavigationService navigationService)
{
NavigateForwardCommand = new DelegateCommand(async () =>
{
await navigationService.NavigateAsync($"{nameof(NavigationPage)}/{nameof(ContentPage1_1)}");
});
}
That navigation works
在 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 不执行任何操作。所有其他人都失去了选项卡或正确的导航栏。
The arrow navigation in the navigationbar works!
如何在我的选项卡中导航回上一页?
有效。在 TabPage ViewModel 中,我将导航更改为
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 的属性。
就这些了。
我有以下页面结构
- 主页:TabbedPage
- TabPage1:内容页
- ContentPage1_1:内容页
- TabPage2:内容页
- 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。这就是视图模型的代码
public DelegateCommand NavigateForwardCommand { get; set; }
public TabPage1ViewModel(INavigationService navigationService)
{
NavigateForwardCommand = new DelegateCommand(async () =>
{
await navigationService.NavigateAsync($"{nameof(NavigationPage)}/{nameof(ContentPage1_1)}");
});
}
That navigation works
在 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 不执行任何操作。所有其他人都失去了选项卡或正确的导航栏。
The arrow navigation in the navigationbar works!
如何在我的选项卡中导航回上一页?
有效。在 TabPage ViewModel 中,我将导航更改为
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 的属性。
就这些了。