You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何实现无导航栏的页面重定向?基于Shell.Current.GoToAsync

实现Shell下条件跳转并隐藏导航栏的方案

1. 配置Shell路由与导航栏默认隐藏

在AppShell.xaml中给Login和Home页面注册路由时,直接设置Shell.NavBarIsVisible="False",让页面加载时默认不显示导航栏:

<ShellContent 
    Title="Login" 
    ContentTemplate="{DataTemplate local:LoginPage}" 
    Route="Login" 
    Shell.NavBarIsVisible="False"/>

<ShellContent 
    Title="Home" 
    ContentTemplate="{DataTemplate local:HomePage}" 
    Route="Home" 
    Shell.NavBarIsVisible="False"/>

2. 在Check页面编写条件跳转逻辑

在Check页面的OnAppearing生命周期方法里完成条件判断,使用Shell的绝对路由(以//开头)跳转,这样能直接替换当前导航栈,避免返回时回到Check页面:

protected override async void OnAppearing()
{
    base.OnAppearing();

    // 替换成你的实际条件判断逻辑,比如读取本地存储的登录状态
    bool isLoggedIn = Preferences.Get("HasValidToken", false);

    if (isLoggedIn)
    {
        // 跳转到Home页面,关闭动画可选
        await Shell.Current.GoToAsync("//Home", animate: false);
    }
    else
    {
        // 跳转到Login页面
        await Shell.Current.GoToAsync("//Login", animate: false);
    }
}

3. 动态控制导航栏的备选方案

如果需要根据场景动态切换导航栏显示状态,可以在目标页面的OnAppearing方法里手动设置:

protected override void OnAppearing()
{
    base.OnAppearing();
    Shell.Current.NavBarIsVisible = false;
}

注意:如果Check页面是AppShell的初始页面,建议也给它设置Shell.NavBarIsVisible="False",避免跳转时出现导航栏闪烁的问题。

内容的提问来源于stack exchange,提问作者Kosheii

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.10 16:55:27