[ PROMPT_NODE_23726 ]
navigation_sections
[ SKILL_DOCUMENTATION ]
# 导航与区域
Zafiro 提供了强大的抽象来管理全应用范围的导航和模块化 UI 区域。
## 使用 INavigator 进行导航
`INavigator` 接口用于在不同的视图或 ViewModel 之间切换。
csharp
public class MyViewModel(INavigator navigator)
{
public async Task GoToDetails()
{
await navigator.Navigate(() => new DetailsViewModel());
}
}
## UI 区域 (Sections)
区域是 UI 的模块化部分(如选项卡或侧边栏项),可以自动注册。
### [Section] 特性
旨在作为区域的 ViewModel 应标记为 `[Section]` 特性。
csharp
[Section("Wallet", icon: "fa-wallet")]
public class WalletSectionViewModel : IWalletSectionViewModel
{
// ...
}
### 自动注册
在 `CompositionRoot` 中,可以自动注册区域:
csharp
services.AddAnnotatedSections(logger);
services.AddSectionsFromAttributes(logger);
### 切换区域
你可以通过 `IShellViewModel` 切换当前活动的区域:
csharp
shellViewModel.SetSection("Browse");
> [!IMPORTANT]
> 当配置了 `ProjektankerIconControlProvider` 时,`[Section]` 特性中的 `icon` 参数支持 FontAwesome 图标(例如 `fa-home`)。