- name
- uno-navigation-tabbar
- description
- Implement TabBar navigation in Uno Platform using region-based navigation. Provides complete, compilable shell template for bottom tab navigation. Use for 3-5 top-level pages in mobile-first apps.
- when_to_use
- Use when 3-5 top-level pages, mobile-first / consumer apps, default choice when prompt does not indicate desktop or enterprise, building bottom navigation (mobile), linking TabBar items to content pages via regions, or using TabBar with Navigation Extensions.
- metadata
- {"author":"uno-platform","version":"3.5","category":"navigation"}
# Uno Navigation with TabBar — Agent Skill
## Reference Templates
For complete, compilable shell XAML with parameterized placeholders, see:
**`references/shell-tabbar-template.md`** — Contains:
- Icon lookup table (Home, Search, Settings, Profile, etc.)
- SHELL_PAGE_NAME.xaml shell template with TabBar
- Page template (XAML + code-behind)
- Route registration template
- Substitution rules
- Localization template (Resources.resw)
## Workflow
> **Docs lookup:** call `uno_platform_docs_search(...)` first, then `uno_platform_docs_fetch(sourcePath="…")` using the `sourcePath` field from a result (a relative `.md` path; add the result's `anchor` for a section). Never pass a URL, a `.html` link, or a hand-built path.
### Step 1: Fetch the TabBar Navigation Documentation
```
uno_platform_docs_search("Uno Navigation TabBar bottom tab region navigation")
```
Primary documentation pages:
- **TabBar Navigation (Chefs)**: `external/uno.chefs/doc/toolkit/NavigateTabBar.md`
- **Define Regions**: `external/uno.extensions/doc/Learn/Navigation/Walkthrough/DefineRegions.md`
Fetch the Chefs TabBar page:
```
uno_platform_docs_fetch(sourcePath="external/uno.chefs/doc/toolkit/NavigateTabBar.md")
```
### Step 2: For TabBar Control Reference
For TabBar control properties and styling:
```
uno_platform_docs_search("Uno Toolkit TabBar TabBarItem styles badges")
```
See also the `uno-toolkit-tabbar` skill for the control itself.
### Step 3: For Responsive Navigation
If combining TabBar (mobile) with NavigationView (desktop):
See the `uno-navigation-responsive-shell` skill.
## Key Principles (Stable)
- TabBar uses region-based navigation similarly to NavigationView
- Each `TabBarItem` gets `uen:Region.Name="RouteName"`
- Parent container and content area need `Region.Attached="True"`
- Apply `BottomTabBarStyle` to the `TabBar`; per-`TabBarItem` styling comes from the active design-theme (e.g., `MaterialBottomTabBarItemStyle` from [[uno-toolkit-material-theme]])
- Requires `Toolkit` in `<UnoFeatures>` along with `Navigation`
- XAML namespaces: `xmlns:uen="using:Uno.Extensions.Navigation.UI"` and `xmlns:utu="using:Uno.Toolkit.UI"`
## Critical Rules
- The root `Grid` with `uen:Region.Attached="True"` MUST be a direct child of the Page content — it enables region navigation
- `uen:Region.Navigator="Visibility"` MUST be on the content area Grid — this tells the framework to toggle child visibility
- **The content area Grid with `Region.Navigator="Visibility"` must be empty in XAML.** Do not add `Collapsed` child elements for each route. The navigation framework resolves registered routes and injects the corresponding views at runtime.
- `uen:Region.Attached="True"` MUST also be on the TabBar itself
- Route names in `RouteMap` MUST match the `uen:Region.Name` values in `SHELL_PAGE_NAME.xaml`
- Tab page routes are nested under the `"Main"` route so only the content area updates, not the entire page
- Do NOT use `Region.Attached="True"` inside `Shell.xaml` — only in `SHELL_PAGE_NAME.xaml`
## Related Skills
- [[uno-navigation-regions]] — Region concepts
- [[uno-navigation-responsive-shell]] — Adaptive navigation
- [[uno-navigation-panel-visibility]] — Visibility-based content switching details
- [[uno-toolkit-tabbar]] — TabBar control reference
- [[uno-navigation-navigationview]] — Sidebar navigation alternative
- [[uno-navigation-routes]] — Route registration details
Voir sur GitHub