导航到 Xamarin 中的特定顶部标签页 Shell

Navigate to a specific top tab page in Xamarin Shell

我的 Xamarin Shell 应用程序在 AppShell.xaml 文件中定义了以下 FlyoutItem 元素:

<FlyoutItem ...>
    <ShellContent Title="A" Route="R1" ... />
    <ShellSection Title="B" Route="R2">
        <ShellContent Title="C" Route="R3" ... />
        <ShellContent Title="D" Route="R4" ... />
    </ShellSection>
    <ShellContent Title="D" Route="R5" .../>
    <ShellContent Title="E" Route="R6" ... />
</FlyoutItem>

我想要获得的行为如下:

我如何获得这个?

如果您同意以下内容:

如果当前 selected/displayed 页面是上部选项卡“D”(底部选项卡“B”的子项),并且用户再次单击底部选项卡“B”,则不会发生任何事情,导航也不会转到“C”,如果显示页面“A”或“E”(属于“B”部分的页面除外)并单击“B”,它将显示“C”,如果单击“相同” D" 会显示"D",这道题可能对你有帮助。

在你的Appshell.cs中:

public AppShell()
{
...
      InitializeComponent();
      Navigating += Shell_Navigating;
}

private async void Shell_Navigating(object sender, ShellNavigatingEventArgs e)
{
    if (e.Target.Location.OriginalString.Equals("//R5") && e.CanCancel)
    {
        e.Cancel();
        await Shell.Current.GoToAsync("//R2/R4");
    }
}