页面导航与参数传递

在学习过程中,大致的总结一些页面导航与参数传递的知识。

通常我们的应用程序是由多个应用页面构成的,于是就有一个十分重要的行为——页面间的切换。在这里成为页面间的导航。我们需要注意的问题是:怎么实现切换和怎么传递参数。
我们要了解的信息是:

  • 每个页面都有一个独立的URI;
  • 每一个页面都是无状态的,也就是每次加载完页面后,需要重新加载这个页面中所必须的所有参数和数据;
  • 每个页面可以像Web一样,通过链接地址的方式导航。

显而易见,我们实现页面切换的必要数据就是每一个页面的URI,这和我们Web中的Uri的书写是相仿的,我们一样可以通过“?id=‘’”的形式来传递参数。

我们创建一个项目,叫做“NavigationPractice”,添加一个页面叫做“MyPage.xaml”,这是主页面MainPage需要导航到的页面。

四种页面切换的方式 

使用HyperlinkButton来实现

这也是HyperlinkButton的一个重要的应用方式,通过指定HyperlinkButton的NavigateUri属性,实现导航,具体实现:

            <HyperlinkButton Content="点击跳转" Height="30"                              HorizontalAlignment="Left" Margin="28,41,0,0"                              Name="myHyperlinkButton" VerticalAlignment="Top"                              Width="200" NavigateUri="/MyPage.xaml"/>

 

在代码中进行导航

通过页面的NavigationService来实现,NavigationService在这里是页面PhoneApplicationPage的一个属性,取主机用于导航到此页的服务,实际是返回一个NavigationService类型的值,相当于是实例化一个NavigationService的对象。同理,用于接收参数的NavigationContext也是PhoneApplicationPage的一个属性,获取包含有关导航请求的信息的对象,实际上是返回一个NavigationContext类型的属性值,相当于是创建了一 个NavigationContext 的实例。

具体实现:定义一个按钮,给按钮添加Click事件,以实现导航。

 this.NavigationService.Navigate(new Uri("/MyPage.xaml", UriKind.Relative));

 

返回操作

就是当在一个页面中操作完成后,返回到前一个页面中进行操作。

方法一:

使用代码:NavigationService.GoBack()。

方法二:

使用返回键实现返回操作。

补充:禁用返回按键的返回操作。给当前页面添加BackKeyPress事件,使用e.Cancel=true;的方式来禁用返回按键。

 

别名导肮

即定义系统资源,使用别名来实现导航。WP7页面导航可以使用路径别名,是从Silverlight继承来的。使用的方法涉及到资源的定义。方法如下:
首先,在App.xaml的文件中添加Windows.Navigation 命名空间:mlns:navigate="clr-namespace:System.Windows.Navigation;assembly=Microsoft.Phone"。
其次,书写资源代码:

<Application.Resources><navigate:UriMapper x:Key="UriMapper"><navigate:UriMapping Uri="MyNewPage" MappedUri="/MyPage.xaml"/></navigate:UriMapper></Application.Resources>

最后,给Frame添加UriMapper :this.RootFrame.UriMapper = Resources["UriMapper"] as UriMapper;即将这句代码写到App类的构造函数中。

在使用的时候,就像之前的应用一般,只是在路径名中直接书写路径别名就行了。

NavigationService.Navigate(new Uri("NewPage", UriKind.Relative));

 

 

五种页面间参数传递的方法

直接在Uri中添加

类似于web中的参数的传递方法,在Uri中使用”?id=‘’&name=‘’“的方式添加需要传递的参数。当然这不会局限于后台代码或者是HyperlinkButton的NavigateUri属性中,如:

            this.NavigationService.Navigate(new Uri("/MyPage.xaml?flag=test",UriKind.Relative));

或:

 <HyperlinkButton Content="点击跳转" Height="30"                              HorizontalAlignment="Left" Margin="28,41,0,0"                              Name="myHyperlinkButton" VerticalAlignment="Top"                              Width="200" NavigateUri="/MyPage.xaml?flag=test"/>

 

使用路径别名中传递参数

更多:http://www.th7.cn/Program/wp7/2012/04/15/69976.shtml

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值