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

Xamarin Forms 5.0.0.2515路由报错:暂不支持Shell元素相对路由

问题分析与解决方案

错误原因

你遇到的Relative routing to shell elements is currently not supported错误,核心原因是目标页面FinishedGoodsPage已经作为Shell的静态导航元素(比如FlyoutItem或TabBar的子页面)存在于AppShell的XAML结构中。此时使用相对路径跳转,Shell会认为该页面属于现有导航层次的一部分,不支持通过相对路由直接访问;而LocatePage应该未被包含在Shell的静态结构里,仅通过代码注册路由,所以跳转逻辑正常。

解决方法

方案1:使用绝对路由路径跳转

如果需要保留FinishedGoodsPage在Shell的静态导航结构中,修改跳转代码为绝对路径(在页面名称前添加/前缀),同时对参数值做URI编码避免特殊字符导致的解析问题:

async void SelectedItemJournalTemplate(ItemJournalTemplate item)
{
    if (item == null)
        return;

    // 对参数值进行URI编码,处理空格、特殊字符等情况
    var encodedBatchName = Uri.EscapeDataString(item.Name);
    await Shell.Current.GoToAsync($"/{nameof(FinishedGoodsPage)}?{nameof(FinishedGoodsViewModel.PassedJournalBatchName)}={encodedBatchName}");
}

方案2:移除Shell静态结构中的页面声明

如果FinishedGoodsPage不需要作为Shell的固定导航项(比如不需要出现在底部Tab或侧边栏),直接从AppShell.xaml中删除对应的Tab或FlyoutItem声明,仅保留代码中的路由注册即可。此时原有的相对路径跳转逻辑就能正常工作。

额外检查

确保没有重复注册路由:不要同时在AppShell.xaml中声明页面,又通过Routing.RegisterRoute注册同一页面,这种冲突可能导致路由解析逻辑混乱。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.19 19:01:20