方法為 Frame.Navigate(typeof(NextPage));
在來回的同時可能會發現行為和外表很相像的 Windows Phone 有很大的不同…
Windows Phone 的架構上預設是除了儲存 Page History 之外還會有各頁的資料…
所以從 A 至 B 頁…再從 B 頁按 Back 回上頁時…會看到原先的狀態…
Windows 8 Metro Mode 則只會做瀏覽紀錄…頁面資料預設是不儲存的…
在 Constructor 上加 Log 可以發現 Back 時會產生一個新的前頁之 Instance…
另外還發現在 Preview SDK 上連 OnNavigatedTo 的參數有時也會不見造成 Crash…
參數被釋放這點在 Release 之後應該會修復…否則還頗可怕 :p
在 MSDN 此頁 Navigating between pages 最未正是在說明上述狀況…
所以若想要讓用戶 Back 時不再花時間和連線重新整理資料…
記得善用 NavigationCacheMode 屬性的設定…
在 Code 的部份我習慣寫在 Constructor 或 OnPageLoad 時如下…
public MainPage()
{
InitializeComponent();
NavigationCacheMode = Windows.UI.Xaml.Navigation.NavigationCacheMode.Enabled;
}
或是在 Xaml 中的 Page tag 加入此 attribute 如下…
<Page
x:Class="HelloWorld.BlankPage"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:local="using:HelloWorld"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
mc:Ignorable="d"
NavigationCacheMode="Enabled">
沒有留言:
張貼留言