MAUI怎么在Shell导航中隐藏某个页面 MAUI路由配置

煙雲
发布: 2025-12-20 12:01:00
原创
441人浏览过
.NET MAUI Shell中“隐藏页面”指不显示在Flyout或TabBar中但可通过URI导航,需仅注册路由而不放入可视化容器;可动态设IsVisible控制显隐,并用Navigating事件拦截非法跳转。

maui怎么在shell导航中隐藏某个页面 maui路由配置

在 .NET MAUI Shell 导航中,**“隐藏某个页面”通常指不让该页面出现在抽屉菜单(Flyout)或标签栏(TabBar)中,但依然能通过 URI 导航跳转过去**——比如详情页、编辑页、登录后跳转页等非主入口页面。这不是真正“禁用”,而是**路由可见性控制**,靠 Shell 的路由注册方式和 UI 结构配置实现。

只注册路由,不放入 FlyoutItem 或 TabBar

Shell 页面是否显示在导航 UI 中,取决于它是否被包含在 FlyoutItemTabBarTab 这些可视化容器里。只要不把页面放进这些结构,它就不会出现在菜单或底部标签中,但仍可通过 GoToAsync 访问。

  • ✅ 正确做法:在 AppShell.xaml 中只给需要展示的页面配 ShellContent,其他页面仅注册路由
  • ❌ 错误做法:把所有页面都塞进 FlyoutItem,再用代码隐藏(无效且破坏结构)

示例:只让 cats/dogs 出现在菜单,monkeys 页面可跳转但不显示


  
    
      
      
    

  

  

然后在 AppShell.xaml.cs 中注册路由:

Routing.RegisterRoute("monkeys", typeof(MonkeysPage));

用 ShellContent 设置 IsVisible="False"

如果某页面已放在 FlyoutItemTab 中,但想临时隐藏(比如权限控制),可以用 IsVisible 属性动态控制其可见性。

Boomy
Boomy

AI音乐生成工具,创建生成音乐,与世界分享.

Boomy 368
查看详情 Boomy
  • IsVisible="False" 会让该项从 Flyout 或 TabBar 中完全消失(不只是变灰)
  • 需在代码中绑定或设置,XAML 中写死不灵活,推荐运行时控制

例如在 AppShell.xaml.cs 构造函数或 OnNavigated 中:

var monkeysItem = this.FlyoutItems.OfType()
  .FirstOrDefault(f => f.Route == "monkeys");
if (monkeysItem != null)
  monkeysItem.IsVisible = User.HasPermission("view-monkeys");

避免被路由匹配到的“伪隐藏”技巧

有些页面你希望彻底屏蔽外部访问(比如未登录时禁止跳转),光靠 UI 隐藏不够,还需拦截导航:

  • 订阅 Shell.Navigating 事件,在跳转前判断目标路由和当前状态
  • 调用 e.Cancel = true 可中断导航,并可跳转到登录页
  • 适合做权限校验,不是 UI 隐藏,但常配合使用

示例:

Shell.Current.Navigating += (s, e) =>
{
  if (e.Target.Location.ToString().Contains("admin") && !User.IsAdmin)
  {
    e.Cancel = true;
    await Shell.Current.GoToAsync("//login");
  }
};

基本上就这些。关键记住:Shell 中页面“显隐”本质是结构决定的——放进 Flyout/Tab 就可见,只注册路由就不占 UI 位置。配合 IsVisibleNavigating 事件,就能做到精准控制。

以上就是MAUI怎么在Shell导航中隐藏某个页面 MAUI路由配置的详细内容,更多请关注php中文网其它相关文章!

路由优化大师
路由优化大师

路由优化大师是一款及简单的路由器设置管理软件,其主要功能是一键设置优化路由、屏广告、防蹭网、路由器全面检测及高级设置等,有需要的小伙伴快来保存下载体验吧!

下载
来源:php中文网
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
最新问题
开源免费商场系统广告
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号