2012-11-06 41 views
0

如何導航到已在winrt中創建的頁面實例,而不是按類型導航(frame.Navigate(typeof(SomePage)))?winrt導航到頁面實例

目前我只設置Window.Current所需頁面,但它不是動畫,當然這將是更好地提供一些後退,CanGoBack邏輯等

回答

4

顯然是不支持內置的,但你可以嘗試設置frame.Content = existingInstance或者用page.NavigationCacheMode來擺弄你想要的效果。如果這不起作用 - 您可以實現您自己的導航框架實現,可能基於ContentControl。您還可以從WinRT XAML Toolkit中的AlternativeFrame控件中竊取我的代碼,其中我試圖通過添加頁面預加載和併發頁面轉換動畫來實現常規Frame控件的所有功能。我認爲如果你確定離開官方的Frame和Page控件並且潛入一些開源的地方,那麼增加對導航方法重載的支持並不困難。

+1

感謝,AlternativeFrame的重載很容易,它解決了我的問題。你讓生活變得更美好!再次感謝。 –

+0

你會考慮拉請求嗎? –

+1

偉大的答案,但我會補充說,有一個原因WinRT頁面導航工作的方式來不重新使用一個頁面。要做到這一點並不是內存高效的,而且隨着低成本低性能平板電腦的推出,真正值得考慮這一因素。此外WinRT/Win8 SDK提供了定義良好的解決方案,以避免頁面重複使用。使用它更容易,讓操作系統執行它的調度任務,而不是在每個可能的暫停/恢復場景下實施自己的解決方案。應該在頁面請求(OnSave)時保存數據,並在需要時加載它(OnLoad)。 –