WP8 页面之间传递数据

1.先看下页面之间导航的事件,下图

这3个事件是从Page里边的虚方法,可以通过F12查看:

   所以我们只需要在导航到的页面上重写这3个方法,我在myPage页面重写了这3个方法:

    protected override void OnNavigatedFrom(NavigationEventArgs e)
        {
            base.OnNavigatedFrom(e);

            MessageBox.Show("已经离开我的主页");
        }

        protected override void OnNavigatedTo(NavigationEventArgs e)
        {
            base.OnNavigatedTo(e);

            MessageBox.Show("来到我的主页面");
        }

        protected override void OnNavigatingFrom(NavigatingCancelEventArgs e)
        {
            base.OnNavigatingFrom(e);

            MessageBox.Show("正在离开我的主页");
        }

  执行顺序可以看运行效果

那如何在页面之间穿值呢,其实页面之间的传值,和web传值基本一样,格式: /Page ? key = value  ( / 这是根目录 ,Page是要导航到的页面 ?后边就是要传的值 ,传多个值,就用&隔开)

比如: this.NavigationService.Navigate(new Uri("/MyPage.xaml?id=123&name=wz",UriKind.Relative)); 这是导航到MyPage页面

我们在MyPage页面在 OnNavigatedTo 方法中 可以这样取值:   this.NavigationContext.QueryString["id"]    ,  this.NavigationContext.QueryString["name"]

如果需要传递多个值,像 /Page ? key = value & key1=value1 & ..... 这样写会比较麻烦  ,且不易于管理,这时我们就用到了URI映射 ,看下图介绍:

这个像MVC中的路由,路由中的解析规则

这就是那个解析规则   

private void SetUriMapping()
        {
            if (RootFrame != null)
            {
                UriMapper mapper = new UriMapper();
                UriMapping mappingmypage = new UriMapping();
                mappingmypage.Uri = new Uri("/mypage/{id}/{name}", UriKind.Relative);
                mappingmypage.MappedUri = new Uri("/MyPage.xaml?id={id}&name={name}", UriKind.Relative);
                mapper.UriMappings.Add(mappingmypage);
                RootFrame.UriMapper = mapper;
            }
        }

在导航到另一个页面就可以这样写:

        string url = string.Format("/mypage/{0}/{1}", 12, "wz");
         this.NavigationService.Navigate(new Uri(url, UriKind.Relative));

在MyPage.xaml页面,接受数据,也是用 

NavigationContext.QueryString 取值

评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值