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提供的這個導航功能非常強大,但是代碼卻不複雜,通過一些簡單的接口,實現了非常強大的功能。