{"record":{"id":"658218cd5bb3ef20","repo":"PrismLibrary/Prism","slug":"navigationexception-nopageisregistered-658218","errorCode":"NavigationException.NoPageIsRegistered","errorMessage":"NavigationException.NoPageIsRegistered","messagePattern":"NavigationException\\.NoPageIsRegistered","errorType":"exception","errorClass":"NavigationException","httpStatus":null,"severity":"error","filePath":"src/Maui/Prism.Maui/Navigation/Builder/TabbedSegmentBuilder.cs","lineNumber":21,"sourceCode":"\nnamespace Prism.Navigation.Builder;\n\ninternal class TabbedSegmentBuilder : ITabbedSegmentBuilder, IConfigurableSegmentName, IUriSegment, IRegistryAware\n{\n    private INavigationParameters _parameters { get; }\n    private INavigationBuilder _builder { get; }\n\n    public TabbedSegmentBuilder(INavigationBuilder builder)\n    {\n        _builder = builder;\n        _parameters = new NavigationParameters();\n\n        if (builder is not IRegistryAware registryAware)\n            throw new Exception(\"The builder does not implement IRegistryAware\");\n\n        var registrations = registryAware.Registry.ViewsOfType(typeof(TabbedPage));\n        if (!registrations.Any())\n            throw new NavigationException(NavigationException.NoPageIsRegistered, nameof(TabbedPage));\n\n        var registration = registrations.Last();\n        SegmentName = registration.Name;\n    }\n\n    public TabbedSegmentBuilder(INavigationBuilder builder, string segmentName)\n    {\n        _builder = builder;\n        _parameters = new NavigationParameters();\n\n        if (builder is not IRegistryAware registryAware)\n            throw new Exception(\"The builder does not implement IRegistryAware\");\n\n        var registration = registryAware.Registry.ViewsOfType(typeof(TabbedPage)).FirstOrDefault(x => x.Name == segmentName);\n        if (registration == null)\n            throw new NavigationException(NavigationException.NoPageIsRegistered, nameof(TabbedPage));\n\n        SegmentName = registration.Name;","sourceCodeStart":3,"sourceCodeEnd":39,"githubUrl":"https://github.com/PrismLibrary/Prism/blob/358118cd640d9a22ff8cf21c8ad197fa038b7990/src/Maui/Prism.Maui/Navigation/Builder/TabbedSegmentBuilder.cs#L3-L39","documentation":"The parameterless-segment TabbedSegmentBuilder constructor queries the registry for TabbedPage registrations and throws NavigationException(NoPageIsRegistered) when none exist. Prism cannot pick a default TabbedPage segment name without a registration.","triggerScenarios":"Calling `new TabbedSegmentBuilder(navigationBuilder)` (or an API that constructs it, like a builder AddTabbedSegment overload) when the IViewRegistry has no registration for typeof(TabbedPage).","commonSituations":"Apps using TabbedPage without registering it in the Prism registry; MAUI Shell apps migrated to Prism where TabbedPage registration was skipped; missing `RegisterForNavigation<TabbedPage>` call at startup.","solutions":["Register TabbedPage: `registry.RegisterForNavigation<TabbedPage>(nameof(TabbedPage));` before creating tabs.","Use the TabbedSegmentBuilder(builder, segmentName) overload only after ensuring a matching named registration exists.","Confirm the registration module/extension that adds TabbedPage actually runs at app startup."],"exampleFix":"// before\nbuilder.AddNavigationPage(b => b.AddTabbedSegment()); // throws: no TabbedPage registered\n// after\nregistry.RegisterForNavigation<TabbedPage>(nameof(TabbedPage));\nbuilder.AddNavigationPage(b => b.AddTabbedSegment());","handlingStrategy":"validation","validationCode":"if (!((IRegistryAware)builder).Registry.ViewsOfType(typeof(TabbedPage)).Any())\n    throw new InvalidOperationException(\"Register TabbedPage before creating a tabbed segment\");","typeGuard":"null","tryCatchPattern":"try { builder.AddNavigationPage(b => b.AddTabbedSegment()); }\ncatch (NavigationException ex) when (ex.Code == NavigationException.NoPageIsRegistered)\n{\n    // register TabbedPage at startup or use a different segment type\n}","preventionTips":["Register TabbedPage (RegisterForNavigation<TabbedPage>) during app init","Run registration modules before first navigation","Write a startup test asserting TabbedPage appears in ViewsOfType"],"tags":["prism","maui","navigation","tabbedpage","registration"],"backgroundTag":"entity-not-found","analyzedSha":"358118cd640d9a22ff8cf21c8ad197fa038b7990","analyzedAt":"2026-09-15T15:00:31.079Z","contentChangedAt":"2026-09-15T15:00:31.079Z","schemaVersion":2},"datasetVersion":"2026-09-16T04:17:20.429Z"}