win8中是沒有對話框的概念的,不同的界面是不同的頁面,類似於網頁,通過Frame.Navigate(typeof(Page),obj參數)來在不同的頁面間導航。
Frame屬性的方法:GoBack()後退;GoForward()前進;CanGoBack屬性判斷是否可以後退。
後臺中調用:(Frame就是Page的一個屬性)
<pre name="code" class="csharp">Frame.Navigate(typeof(myPage));
Frame.GoBack();
傳參數:
//傳參數
Frame.Navigate(typeof(myPage),1);
//獲取參數
int i = (int)e.Parameter;
頁面導航默認是不啓用緩存,也就是後退以後前一個頁面恢復成原始狀態,需要在構造函數中執行:(啓用緩存選項)
NavigationCacheMode = Windows.UI.Xaml.Navigation.NavigationCacheMode.Enabled;
三個和頁面導航相關的虛方法:(重寫虛方法)
OnNavigatedTo:當頁面成爲活動頁面時調用。e.NavigationMode得知是新來的New還是後退進來的Back還是前進來的Forward,一般數據初始化放到OnNavigatedTo中,注意判斷Mode
override void OnNavigatedTo()
{
//因爲後退回來還會觸發。所以需要判斷只有是新進入的New,才加載數據
if(e.NavigationMode == NavigationMode.Back){//加載數據}
}
OnNavigatedFrom:當頁面不再是活動頁面時調用
OnNavigatingFrom:在頁面即將不再是活動頁面時調用,實現確認是否退出
override void OnNavigatingFrom()
{
e.Cancel = true;//阻止離開頁面
}