学习笔记(Maui 10 无参导航)
DailyPoetryM 项目(对应 P19 P20 部分)
本节通过 DailyPoetryM 项目讲解导航服务
在 MVVM + IService 服务的框架中,导航服务显然需要在 Service 中实现。View 到 ViewModel 到 IService 均是单项依赖,导航需要 IService 控制 View,破坏了单项依赖。
导航的一般处理方式:
- 导航需要参与导航的每一个页面都有唯一的字符串名字
- 导航的一般形式:
- navigateTo(string key, object parameter); // 带参数导航(key:导航目的地;parameter:参数)
- navigateTo(string key); // 无参数导航
1 导航行为定义
软件包含两种导航:
- 根导航,实现平行地位的一级页面(Flyout)间相互导航;
- 内容导航,页面内操作造成一级页面向非一级页面的导航。
在中间库项目 DailyPoetryM.Library 的 Services 文件夹中增加接口 IServiceNavigationRoot,定义根导航行为。
public interface IServiceNavigationRoot
{
Task NavigateToAsync(string pageKey);
Task NavigateToAsync(string pageKey, object parameter);
}
在中间库项目 DailyPoetryM.Library 的 Services 文件夹中增加接口 IServiceNavigationContent,定义内容导航行为。
public interface IServiceNavigationContent
{
Task NavigateToAsync(string pageKey);
Task NavigateToAsync(string pageKey, object parameter);
}