2017-08-03 22 views
0

您好我有這個層次UWP - 如何保存幀backstack和當前頁面?

應用程序(RootFrame)

  • 登錄頁面
  • 主要殼牌(InnerFrame)
    • 與實體1
    • 列表頁面與實體2
    • 列表頁
  • 詳細頁面fo ř實體1(InnerFrame2)
    • 子頁面1-1
    • 子頁面1-2
  • 對於實體2(InnerFrame3)詳細頁
    • 子頁面2-1
    • 子頁面2 -1

我想正確處理「後退」按鈕。在內部框架中的頁面之間導航是可以的,但是當我例如從「List Page with Entity 2」到「Detail 2 for實體2」然後返回時,MainShell重新創建並忘記了InnerFrames BackStack並打開Page(應該是「列表頁面與實體2「)

有沒有什麼優雅的方式來處理?例如當MainShell中的navigatedFrom發生時保存InnerFrames歷史記錄和當前頁面?

+0

你的意思是你有一個相同的頁面三個幀?你能否提供一個[mcve]如果方便?如果不是,請至少提供一個截圖。 –

回答

0

我找到了我需要的東西。 Frame對象上有SetNavigationState(string)和GetNavigationState()方法。無論如何感謝

0

您可以試試Prism Framework,這是一個管理example的生命週期。

簡而言之,在調用OnAppSuspendedOnAppResumed事件時,Prism提供SessionStateService來管理視圖恢復。

也棱鏡NavigationService通過NavigatedToEventArgs e, NavigatedFromEventArgs e, Dictionary<string, object> viewModelState參數和您的頁面行爲可以使用此參數在OnNavigatedToOnNavigatedFrom override。

+0

我知道如何在ViewModel中保存狀態,但我可能需要保存(和重新加載)框架狀態,我不知道如何去做(基本上如何保存和恢復Frame.BackStack和Frame.Content) –

+0

也許[this] (https://stackoverflow.com/questions/35944277/uwp-page-state-manage)將幫助 – ashchuk

相關問題