我目前正在使用 .NET Maui,想知道选项卡内的导航是如何工作的。我在文档中找不到我要找的内容,但如果我错过了,也许有人可以为我指出。
所以目前我有一个带有两个底部选项卡的选项卡栏。第二个选项卡显示项目列表,当我单击一个项目时,我想显示一个新页面,其中包含从列表中选择的项目的详细信息。这按预期工作,但如果我单击第一个选项卡,然后返回第二个选项卡(列表),它不会显示列表,而是显示上一个单击项目的详细信息页面。
这就是我的标签栏导航的设置方式
<Shell
x:Class="AthleticAlliance.AppShell"
xmlns="http://schemas.microsoft.com/dotnet/2021/maui"
xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
xmlns:local="clr-namespace:AthleticAlliance.Views"
Shell.FlyoutBehavior="Disabled"
Shell.NavBarIsVisible="False">
<TabBar>
<Tab Title="Dashboard" Icon="home_black_24dp.svg" Route="MainPage">
<ShellContent ContentTemplate="{DataTemplate local:MainPage}"/>
</Tab>
<Tab Title="Workouts" Icon="list_black_24dp.svg" Route="workouts">
<ShellContent ContentTemplate="{DataTemplate local:WorkoutListPage}"/>
</Tab>
</TabBar>
</Shell>
路由到详细信息页面的 AppShell.xaml.cs:
public partial class AppShell : Shell
{
public AppShell()
{
InitializeComponent();
Routing.RegisterRoute(nameof(WorkoutDetailsPage), typeof(WorkoutDetailsPage));
}
}
我在文档中是否错过了任何提示,或者我是否必须在详细信息页面的 OnDisappearing 方法中自己清除导航堆栈(如果可能的话,但这似乎是不正确的方法,并且应该更容易做到这一点) )。
先感谢您
// 更新:
根据杰森的评论,我找到了解决我的问题的方法。
我正在使用导航转到我当前所在的选项卡中的根页面
private void ImageButton_Clicked(object sender, EventArgs e)
{
Navigation.PopToRootAsync();
}
我不知道为什么,但我尝试在 viewModel 中进行操作,但没有成功,因为我无权访问那里的导航