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;//阻止离开页面
}