Prism 源码解读7-导航

介绍

Prism提供了一个非常强大的功能导航,导航的意思就是指定对应的View显示。这个导航的强大之处有:

  • 可以设置导航前后的动作
  • 可以指定View实例的生命周期,可以是否导航到新的View实例
  • 提供了确认导航接口。

Prism 源码解读7-导航_第1张图片

  • 导航前后均有相应的事件通知
  • 提供了回退前进的导航功能

导航

直接看代码

Prism 源码解读7-导航_第2张图片

Prism 源码解读7-导航_第3张图片

可以看到直接通过RequstNavigate来请求,参数是View的TypeName

Prism 源码解读7-导航_第4张图片

转到了Region.RequestNavigate里

Prism 源码解读7-导航_第5张图片

这边出现了NavigationService,几乎所有的导航功能都是在这个服务中实现的,

Prism 源码解读7-导航_第6张图片

Prism 源码解读7-导航_第7张图片

Prism 源码解读7-导航_第8张图片

这边将导航的一些信息封装成NavigationContext,

Prism 源码解读7-导航_第9张图片

在这出现了第一个功能,实现ICon'firm'NavigationRequest接口,确认导航。

最后来到了最重要的函数ExecuteNavigation

Prism 源码解读7-导航_第10张图片

这个函数每一行都很重要,每一行都是一个功能。

Prism 源码解读7-导航_第11张图片

调用OnNavigateFrom,可以在导航前做一些操作

Prism 源码解读7-导航_第12张图片

获取导航内容,先从Region的View中找,没找到就到容器中找,然后添加到Region的View。

Prism 源码解读7-导航_第13张图片

激活界面

创建条目,保存条目,主要用来进行前进后退

触发导航完成事件。

整个导航功能的顺序:

Prism 源码解读7-导航_第14张图片

总结

Prism提供的这个导航功能非常强大,但是代码却不复杂,通过一些简单的接口,实现了非常强大的功能。

你可能感兴趣的:(Prism 源码解读7-导航)