Prism 源码解读7-导航

介绍

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

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

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

导航

直接看代码

1586101856797

1586101868352

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

1586101921254

转到了Region.RequestNavigate里

1586101954617

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

1586102614643

1586101993357

1586102012245

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

1586102044383

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

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

1586102124583

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

1586102153448

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

1586102182080

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

1586102280441

激活界面

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

触发导航完成事件。

整个导航功能的顺序:

总结

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

posted @ 2020-04-06 00:09  阿杜聊编程  阅读(777)  评论(0编辑  收藏  举报