windows phone 学习之页面导航和数据传递
创建一个windows phone 应用程序,在xaml文件里添加三个按钮和三个textblock,添加一个windows phone 页面(命名为SecondPage),同样也是添加三个按钮和三个textblock。要实现的目标是从MainPage 页面导航到 SecondPage 页面,并且能把一些参数传递过去,之后还能从 SecondPage 返回到 MainPage。
MainPage.xaml.cs 代码如下:
1 using System; 2 using System.Collections.Generic; 3 using System.Linq; 4 using System.Net; 5 using System.Windows; 6 using System.Windows.Controls; 7 using System.Windows.Documents; 8 using System.Windows.Input; 9 using System.Windows.Media;10 using System.Windows.Media.Animation;11 using System.Windows.Shapes;12 using Microsoft.Phone.Controls;13 14 namespace WPApp_Navigation15 {16 public partial class MainPage : PhoneApplicationPage17 {18 // 构造函数19 public MainPage()20 {21 InitializeComponent();22 23 this.button1.Click += new RoutedEventHandler(button1_Click);24 }25 26 void button1_Click(object sender, RoutedEventArgs e)27 {28 // string path = "/SecondPage.xaml";29 // string target = path + string.Format("?s1={0}","zou");30 31 //赋给Uri的字符串参数中间别留空格,多个参数中间用&连起来32 this.NavigationService.Navigate(new Uri("/SecondPage.xaml?s1=aaa&s2=bbb&s3=ccc", UriKind.RelativeOrAbsolute));33 }34 }35 }
代码this.NavigationService.Navigate(new Uri("/SecondPage.xaml?s1=aaa&s2=bbb&s3=ccc", UriKind.RelativeOrAbsolute));是核心
新建一个Uri对象,Uri里的第一个参数里面的/SecondPage.xaml 表示将要导航到的页面的路径,问号后面的就是要传递过去的参数,s1、s2、s3都是参数名 ,等号后面的是它们的值,参数之间用 & 连起来;Uri的第二个参数 UriKind.RelativeOrAbsolute 表示前面的路径是相对的还是绝对的,RelativeOrAbsolute 表示 可能是相对的也可能是绝对的。
SecondPage.xaml.cs 代码如下:
1 using System.Windows.Media.Animation; 2 using System.Windows.Shapes; 3 using Microsoft.Phone.Controls; 4 5 namespace WPApp_Navigation 6 { 7 public partial class SecondPage : PhoneApplicationPage 8 { 9 public SecondPage()10 {11 InitializeComponent();12 this.button1.Click += new RoutedEventHandler(button1_Click);13 14 }15 16 void button1_Click(object sender, RoutedEventArgs e)17 {18 //返回上一个页面19 this.NavigationService.GoBack();20 }21 22 //当该页面是活动页面时触发23 protected override void OnNavigatedTo(System.Windows.Navigation.NavigationEventArgs e)24 {25 base.OnNavigatedTo(e);//调用基类的虚方法是应该的,但不是必须的26 27 if (NavigationContext.QueryString.ContainsKey("s1"))28 {29 this.textBlock1.Text = NavigationContext.QueryString["s1"];30 this.textBlock2.Text = NavigationContext.QueryString["s2"];31 this.textBlock3.Text = NavigationContext.QueryString["s3"];32 }33 }34 35 //当该页面不是活动页面时触发36 protected override void OnNavigatedFrom(System.Windows.Navigation.NavigationEventArgs e)37 {38 base.OnNavigatedFrom(e);39 MessageBox.Show("离开SecondPage");40 }41 42 43 //public void Get()44 //{45 ////不能这样在自己写的方法里调用NavigationContext.QueryString46 // IDictionary<string, string> text = NavigationContext.QueryString;47 //}48 49 }50 }
在这里,重写基类的OnNavigatedTo方法: protected override void OnNavigatedTo(System.Windows.Navigation.NavigationEventArgs e)
OnNavigatedTo方法会在当前页面成为活动时被触发,在这里,可以使用 NavigationContext.QueryString 来获取从MainPage传递过来的参数。NavigationContext.QueryString 的类型是 IDictionary<string, string> ,就是 键/值 对。
当我们想回到MainPage 页面时,可以通过 this.NavigationService.GoBack(); 实现
在离开SecondPage 页面时,如果我们想在离开前再做最后一点事情,可以放在 OnNavigatedFrom 函数里,也是通过重写基类的虚方法实现,当该页面从活动变成不是活动页面时触发 protected override void OnNavigatedFrom(System.Windows.Navigation.NavigationEventArgs e)
转载于:https://www.cnblogs.com/zouzf/archive/2012/03/19/2406224.html
windows phone 学习之页面导航和数据传递相关推荐
- 浅谈ASP中Web页面间的数据传递
[简 介] 基于Web的动态网页设计必会涉及到页面间的数据传递,文章探讨了ASP设计中常用的Web页面间的数据传递方式,分析各种数据传递方式的使用方法.使用场合及优缺点,其都是设计阶段选择数据传递方式 ...
- vue页面跳转数据传递
vue页面跳转数据传递 方法一: 第一页跳转赋值: toParameter:function(row) { this.$router.push({ path:'cardParameter', ...
- vue 同页面不同组件数据传递
不用 vuex 同页面不同组件数据传递,用vuex的这篇文章可以忽略! 直接举例: 一个页面有两个组件,其中组件A的数据可以传递到组件B,同理组件B的数据可以传递到组件A, 即AB两个组件可以互相传递 ...
- android webrtc学习五(webrtc视频数据传递和切换摄像头问题处理)
android webrtc学习五(webrtc视频数据传递和切换摄像头问题处理) Android webrtc摄像头流程分析 1.打开摄像头 2.获取流数据 摄像头切换 问题场景:在使用华为手机(忘 ...
- 微信小程序父子页面间得数据传递(对象或者数组)
1.页面跳转时向子页面传入数据 父页面js goexit() { //跳转方法var data = JSON.stringify(this.data.data.follow) // this.data ...
- WEB前端 vue学习二 组件之间的数据传递
Vue 的组件作用域都是孤立的,不允许在子组件的模板内直接引用父组件的数据.必须使用特定的方法才能实现组件之间的数据传递. 首先用 vue-cli 创建一个项目,其中 App.vue 是父组件,com ...
- 小程序:自定义组件的实现方法及自定义组件与页面间的数据传递
首先我们在pages文件夹下创建components目录用于存放自定义组件.如图所示,以我创建的dialog组件为例,自定义组件的格式与页面一样,分为4个文件. 图1 ...
- 微信小程序页面间的数据传递和数据共享
方法一:利用url 如下代码所示,首先在.wxml文件中找到更多按钮并绑定相应方法,接着通过data-name指定所传参数的名字,如图所传参数名为:category. <view class=& ...
- 小程序丨从子页面退回父页面时的数据传递
在微信小程序中,从父级页面转到下一个页面,一般可以通过navigate或redirect时候的url来携带参数,然后在目标页面的onLoad函数参数中获取这些url参数,可以参考之前写的http:// ...
最新文章
- OSChina 技术周刊第九期 —— 每周技术精选,值得一看!
- 网页html文档头部声明的两种常用模式
- 用numpy做图像处理
- 2021-01-21 linux shell脚本实现间隔一定时间执行一次任务
- 学习分布式不得不会的CAP理论
- 豆瓣最高评分8.1!万维钢:读懂这本书,你会比身边人更深的理解这个时代
- CKEditor快速介绍与入门示例
- ES6学习(七)—Set 和 Map 数据结构
- elasticsearch问题解决之分片副本UNASSIGNED
- matlab怎么构建函数模型,matlab数学模型建立(如何用matlab建立数学模型及求解。哪位高手给个模版。)...
- 直播视频网站源码,静态时钟
- 查看python包的版本
- 演讲稿【物性的神奇】
- 【092】召唤神龙-指尖大鱼吃小鱼的魔性游戏
- 高校社团管理系统java_高校社团管理系统设计及实现.doc
- 会说话的代码 Python pyttsx3,及AttributeError:partially initialized module......(......)报错,解决方法
- python不改变图片尺寸压缩到指定大小
- mysql添加多列_mysql 怎么给一个表一次增加多个字段? ?
- 《Simulating Knitted Cloth at the Yarn Level》论文笔记
- Flume KafkaChannel的使用
热门文章
- JVM GC性能方面的考虑(吞吐量和STW)
- Mybatis核心配置文件SqlMapConfig.xml独立使用配置内容
- springmvc配置文件的主要内容
- 脉冲宽度测量程序 c51 c语言,基于C51单片机和LCD1602显示的超声波测距仪C语言程序...
- RocketMQ历史版本下载
- 泛函分析4——希尔伯特空间
- opencv mat release thrown_【OpenCV+Python】图像与视频处理入门
- tomcat和idea都占用了8080_IDEA 启动tomcat 端口占用原因以及解决方法( 使用debug模式)...
- python核心教程百度云_Python核心技术与实战 共44讲 中文pdf高清版
- OS / Linux / 制作 deb 包