1

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

<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>

我想要获得的行为如下:

  • 单击B页面,我希望将用户重定向到命名的C选项卡(这是默认行为并且开箱即用)。ShellSectionB
  • 单击D页面,我希望将用户重定向到命名的D选项卡。ShellSectionB

我如何获得这个?

4

1 回答 1

0

如果您对以下情况满意:

如果当前选择/显示的页面是上选项卡“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");
    }
}
于 2020-12-05T22:58:59.870 回答