Windows Phone 页面之间参数传递方法
目前对WP7开发正在研究,对页面之间参数传递进行了一个小总结,有不正确的地方,欢迎大家指正。。
WP7编程采用的技术是Silverlight,页面之间参数传递的方式主要有
通过NavigationContext的QueryString方式;
通过程序的App类设置全局变量;
通过PhoneApplicationService类的State属性;
通过NavigationEventArgs事件类的Content属性设置
1.通过NavigationContext的QueryString函数。
首先通过NavigationService类进行设置导航至Page1页面。
在Page1页面的PhoneApplicationPage_Loaded方法中可以通过NavigationContext的QueryString方法获取传递的参数值,如下所示。
private void PhoneApplicationPage_Loaded(object sender, RoutedEventArgs e)
{
int id = int.Parse(NavigationContext.QueryString["id"]);
}
2. 通过程序的App类设置全局变量;
由于App 类继承自Application类,而通过Application的Current属性可以获取到与当前程序关联的Application类实例,然后通过转换就可以得到App类实例,因此,通过在App类中设置全局变量,在程序的其他任何页面都可以访问。
{
public int ID { get; set;}
}
假设从页面Page1中需要把参数传递给Page2页面中,可以先在Page1页面中先设置;
app.Id= 1; //设置传递参数;
在Page2页面获取设置的参数值;
int id = app.ID; //获取在Page1页面传递参数;
3. 通过PhoneApplicationService类的State属性;
由于PhoneApplicationService类的State是一个IDictionary类型,因此,可以存储任何对象,不过这个对象必须是可序列化(serializable)的。
注:PhoneApplicationService类,需要访问命名空间using Microsoft.Phone.Shell;
在程序中,可以不需要自己创建PhoneApplicationService的实例,通过PhoneApplicationService的静态属性Current就可以获取到已有的PhoneApplicationService实例
在Page1页面中设置参数;
{
phoneAppService.State["id"] = int.Parse(myTextBox.Text);//获取Page1页面的值,进行传递;
base.OnNavigatedFrom(e);
}
protected override void OnNavigatedTo(System.Windows.Navigation.NavigationEventArgs e)
{
object myTxt = null;
if (phoneAppService.State.ContainsKey("id"))
{
if (phoneAppService.State.TryGetValue("id", out myTxt))
{
myTextBox.Text = myTxt.ToString();
}
}
base.OnNavigatedTo(e);
}
在Page2中获取
{
if(PhoneApplicationService.Current.State.ContainsKey("id"))
{
myTextBlock.Text=PhoneApplicationService.Current.State["id"] as string;
}
base.OnNavigatedTo(e);
}
protectedoverridevoidOnNavigatedFrom(System.Windows.Navigation.NavigationEventArgse)
{
PhoneApplicationService.Current.State["id"]=myTextBlock.Text;
base.OnNavigatedFrom(e);
}
4. 通过NavigationEventArgs事件类的Content属性设置
在导航至其他页面函数OnNavigatedFrom中,测试导航的目标页面是否为自己真正要转向传递参数的页面,如果是,可以通过NavigationEventArgs事件类的向目标页面注入一些"传递内容"。
{
var targetPage = e.Content as Page2;
if (targetPage!=null)
{
targetPage.ID= 1; //设置参数值
}
}
在页面Page2中获取参数值;
protected override void OnNavigatedTo(System.Windows.Navigation.NavigationEventArgs e)
{
if (param4 != null)
{
textBlock3.Text = ID.ToString(); //获取参数值;
}
}
本文来自wangbole的博客,原文地址:http://blog.csdn.net/wangbole/article/details/7174663
Windows Phone 页面之间参数传递方法的更多相关文章
- js jquery 实现html页面之间参数传递(单一参数、对象参数传递)
最近自己在忙着做毕业设计,后台程序员,前端菜鸡,因为需要,所以实现了html页面之间参数传递.------jstarseven .菜鸡的自我修养. 页面A代码如下: <!DOCTYPE html ...
- 浅谈MVC页面之间参数传递
关于MVC页面之间的传值,有多种方式,下面,我们就Html.RenderAction 方式 和 Html.RenderPartial 方式 来给大家分享一下有什么不同. 一.Html.RenderAc ...
- asp.net页面之间传值方法详解
asp.net中页面之间传值我们用得最多的就是get,post这两种了,其它的如session,appliction,cookie等这些相对来说少用也不是常用的,只是在特殊情况下在使用了. 1. Ge ...
- asp.net页面与页面之间参数传递
传值asp文件send.aspx 代码如下 复制代码 <form id="form1" runat="server" action="recei ...
- html中 iframe子页面 与父页面之间的方法调用 ;
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...
- iframe 父页面与子页面之间的方法的相互调用
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...
- wx小程序自定义组件与页面之间参数传递
在开发中,很多页面中会使用相同的组件,这时可以将具有相同信息的部分封装成一个组件,方便开发中调用.在调用中可能会涉及到数据的传递问题,例如页面与组件,组件与组件直接的数据传递. 首先看看页面与组件直接 ...
- iframe 父页面与子页面之间的方法的相互调用【转】
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...
- Javascript页面之间参数传递 (前端)
一.来源:tongfang [系统管理员] --[系统管理] 的"SysLeftNavView.ascx.cs 用户插件 usercontrol 左侧菜单导航: <li>< ...
随机推荐
- 用SamInside破解Windows登录密码
用小马PE的USB-HDD+格式制作启动优盘: 笔记本启动时按ESC键,选择USB启动: 进入WinPE后,将%SystemRoot%/system32/config全部拷贝出来(WinXP这个文件夹 ...
- VueApp监听手机物理返回键的事件
代码 第一步创建js文件夹子 在main里面引用 JS文本内容如下 //监听手机物理返回键的事件 document.addEventListener('plusready', function() ...
- git 切换分支 本地代码失踪找回办法
解决方案: https://blog.csdn.net/hupoling/article/details/79017382 主要步骤: git reflog 然后找到之前commit的分支 git c ...
- 一个系列搞懂YARN(1)——Yarn架构
前言 几天前和大哥说起了Yarn,大哥问我,你知道Yarn里面怎么进行资源的动态分配回收的吗?我和诚实,说不知道,然后就有了这个系列博文.不同版本的hadoop版本对应的yarn文档会有差别,本文中选 ...
- Linux通过命令增加IPV6地址
第一步:输入nmcli connection modify "eth0" ipv6.method manual ipv6.address ipv6地址/64 ifname et ...
- SpringBoot整合SpringBatch
一.引入依赖 pom.xml <?xml version="1.0" encoding="UTF-8"?> <project xmlns=&q ...
- docker配置cdn-容器内可以通过域名访问
添加docker的cdn配置 # 没有这个文件创建 vim /etc/docker/daemon.json 添加内容如下 { "dns":["8.8.8.8", ...
- Math.round() 函数返回一个数字四舍五入后最接近的整数。
语法: Math.round(x); 参数:x 返回值:给定数字的值四舍五入到最接近的整数 描述: 如果参数的小数部分大于 0.5,则舍入到相邻的绝对值更大的整数. 如果参数的小数部分小于 0.5,则 ...
- [ASP.NET MVC]@Scripts.Render、@Styles.Render的使用
一.配置BundleConfig.cs文件 1.首先要在App_Start 里面BundleConfig.cs 文件里面 添加要包含的css文件 2.BundleConfig就是一个微软新加的 一个打 ...
- vue爬坑之路1-路由跳转全新页面以及二级页面配置
之前也在网找了一些答案,比较零碎,特此总结下,废话不多说,直接上干货! 路由跳转全新页面 首先在app.vue中先定义router-view,这是主路由. 在router的index.js中引入log ...