导航到 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
页面,我希望用户被重定向到名为ShellSection
的C
选项卡B
(这是默认行为并且开箱即用)。
单击D
页面,我希望用户被重定向到名为B
的ShellSection
的D
选项卡。
我如何获得这个?
【问题讨论】:
我认为第一个条件已经按预期工作了对吧? @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.Forms:处理导航工具栏按钮(Shell)
Xamarin Forms Shell 是不是有删除导航栏但保留汉堡图标的方法?
xamarin.forms.shell 框架中页面上视觉元素的生命周期
有没有办法在 Xamarin.Forms Shell 顶部选项卡中显示图标?
为啥在使用 Prism 在 Xamarin.Forms 中导航到 root 时,我的 NavigationPage 顶部会出现默认标题?