您的位置:首页 > 其它

windows phone页面的简单导航操作

2015-11-16 20:58 267 查看
昨天我们学习了windows phone的简单导航,在具体学习导航操作之前我们还接触到了有关windows phone的框架知识,下面为大家简单介绍一下:

在一个WP程序运行的时候,程序的整个构架由1个windows,1个frame(现在暂且认为为一个),和多个page组成。如有多个page,则依次压入系统栈来执行,每显示一个page压栈,每按一次返回键退栈,直至栈空。比如有三个页面:mainpage,page1,page2则显示页面的先后顺序为mainpage,page1,page2(之后按返回键)page1,mainpage,主界面。

整个效果的实现原理如下:

当我在第一个页面时触发button事件,在后台执行以下代码:

private void button1_Click(object sender, RoutedEventArgs e)

{

Frame fri =(Frame) Window.Current.Content;//定义一个frame类型的变量,括号里的内容代表强制转换, Window.Current.Content属性是指指定的frame所在的window对象

fri.Navigate(typeof(Page2));//表示fri将导航到Page2

}

同时当进入下一个页面的时候添加返回事件

protected override void OnNavigatedTo(NavigationEventArgs e)

{

HardwareButtons.BackPressed+=HardwareButtons_BackPressed

}

从第二个页面到第三个触发的button事件,返回事件也如此

因为整个程序只有一个返回事件,所以要实现上述效果应该在显示这个界面时添加事件,从这个界面退出时删除这个事件,在下面说一下返回事件的代码:

private void HardwareButtons_BackPressed(object sender, BackPressedEventArgs e)

{

e.Handled=true;//该值指示事件处理程序是否已完整处理事件,true表示已处理过的

Frame fri=Window.Current.Content as Frame;//相当于fri现在是frame系统栈的名字

if (fri.CanGoBack)//意思说是栈不为空,即就是还有页面可以返回

{

fri.GoBack();//返回

}

else

App.Current.Exit();//结束这个程序

}

protected override void OnNavigatedFrom(NavigationEventArgs e)

{

HardwareButtons.BackPressed -= HardwareButtons_BackPressed;//减去返回事件

}

这是一个页面的跳转与返回,之后的页面情况以此类推。

备注:这是第一次写博客,格式和表达都会有或多或少的不足,之后会慢慢改正,如果有表达和知识点的错误,请大家指出,谢谢。

作者:李璐
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: