导航到 Xamarin Shell 中的特定顶部选项卡页

Posted

技术标签:

【中文标题】导航到 Xamarin Shell 中的特定顶部选项卡页【英文标题】:Navigate to a specific top tab page in Xamarin Shell 【发布时间】:2020-12-05 21:56:28 【问题描述】:

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

我想要获得的行为如下:

单击B 页面,我希望用户被重定向到名为ShellSectionC 选项卡B(这是默认行为并且开箱即用)。 单击D 页面,我希望用户被重定向到名为BShellSectionD 选项卡。

我如何获得这个?

【问题讨论】:

我认为第一个条件已经按预期工作了对吧? @Cfun 是的。 【参考方案1】:

如果您对以下情况满意:

如果当前选择/显示的页面是上选项卡“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");
    

【讨论】:

以上是关于导航到 Xamarin Shell 中的特定顶部选项卡页的主要内容,如果未能解决你的问题,请参考以下文章

Xamarin Shell 导航浮出控件选定标签颜色未更改

Xamarin.Forms:处理导航工具栏按钮(Shell)

Xamarin Forms Shell 是不是有删除导航栏但保留汉堡图标的方法?

xamarin.forms.shell 框架中页面上视觉元素的生命周期

有没有办法在 Xamarin.Forms Shell 顶部选项卡中显示图标?

为啥在使用 Prism 在 Xamarin.Forms 中导航到 root 时,我的 NavigationPage 顶部会出现默认标题?