- name
- uno-navigation-navigationview
- description
- Implement NavigationView navigation in Uno Platform using region-based navigation. Provides complete, compilable shell template for sidebar/hamburger navigation. Use for >5 pages, hierarchical content, or desktop/enterprise apps.
- when_to_use
- Use when more than 5 top-level pages, hierarchical or content-heavy apps, desktop / enterprise apps, prompt mentions "dashboard", "admin", "desktop", "sidebar", or "drawer", building a sidebar navigation pattern, or implementing a hamburger menu.
- metadata
- {"author":"uno-platform","version":"3.3","category":"navigation"}
# Uno Navigation with NavigationView — Agent Skill
## Reference Templates
For complete, compilable shell XAML with parameterized placeholders, see:
**`references/shell-navigationview-template.md`** — Contains:
- Icon lookup table (Home, Search, Settings, Profile, etc.)
- SHELL_PAGE_NAME.xaml — Without Settings variant
- SHELL_PAGE_NAME.xaml — With Settings variant
- SHELL_PAGE_NAME.xaml.cs — Settings code-behind (`Region.SetName` for built-in Settings item)
- 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 NavigationView Navigation Documentation
```
uno_platform_docs_search("Uno Navigation NavigationView sidebar hamburger region")
```
Primary documentation pages:
- **Define Regions (NavigationView section)**: `external/uno.extensions/doc/Learn/Navigation/Walkthrough/DefineRegions.md`
- **Responsive Shell**: `external/uno.extensions/doc/Learn/Navigation/Walkthrough/ResponsiveShell.md`
Fetch the define regions page:
```
uno_platform_docs_fetch(sourcePath="external/uno.extensions/doc/Learn/Navigation/Walkthrough/DefineRegions.md")
```
Focus on the "Using Regions with NavigationView" section.
### Step 2: For Responsive Navigation
If the user needs adaptive navigation (NavigationView on desktop, TabBar on mobile):
See the `uno-navigation-responsive-shell` skill.
## Key Principles (Stable)
- NavigationView uses region-based navigation to link menu items to content
- Parent container needs `uen:Region.Attached="True"`
- NavigationView needs `uen:Region.Attached="True"`
- Each `NavigationViewItem` uses `uen:Region.Name="RouteName"` to map to content
- Content area uses a Grid with `uen:Region.Attached="True"` and `uen:Region.Navigator="Visibility"`
- XAML namespace: `xmlns:uen="using:Uno.Extensions.Navigation.UI"`
## Critical Rules
- The root `Grid` with `uen:Region.Attached="True"` enables region navigation for the entire shell
- `uen:Region.Attached="True"` MUST also be on the `NavigationView` itself
- The content area `Grid` inside `NavigationView` needs BOTH `uen:Region.Attached="True"` AND `uen:Region.Navigator="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.
- The Settings item is NOT a `NavigationViewItem` in `MenuItems` — use `Loaded` event + `Region.SetName` in code-behind
- Route names in `RouteMap` MUST match the `uen:Region.Name` values in `SHELL_PAGE_NAME.xaml`
- 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 NavigationView + TabBar
- [[uno-navigation-panel-visibility]] — Visibility-based content switching details
- [[uno-navigation-tabbar]] — TabBar alternative
- [[uno-navigation-routes]] — Route registration details
GitHub에서 보기