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>< ...
随机推荐
- rancher v1.6.29部署K8s
1. 前提:上一文中,已部署好单节点Rancher v1.6.29 2. 在Rancher中,添加环境模板 修改k8s设置参数 参数修改明细: Private Registry for Add-Ons ...
- 去掉文件中的^M
一般情况下用:set ff=unix就可以解决问题,如果无效,用下面的方法手工完成: :%s/[ctrl+v] [ctrl+m]//g ctrl+v表示按住Ctrl键再按下v键.
- MyBatis学习02(配置解析)
配置解析 核心配置文件 mybatis-config.xml 系统核心配置文件 MyBatis 的配置文件包含了会深深影响 MyBatis 行为的设置和属性信息. 能配置的内容如下: configur ...
- BUUCTF刷题系列(2)5.27日记
CTF-Bugku-安卓篇1signin Writeup Bugku安卓部分第一题,第七届山东省大学生网络安全技能大赛的题目,属于Android逆向分析.(常用工具:安卓模拟器.JEB.Cyberch ...
- 带你梳理Jetty自定义ProxyServlet实现反向代理服务
摘要:最近要做一个将K8s中的某组件UI通过反向代理映射到自定义规则的链接地址上,提供给用户访问的需求.所以顺便研究了一下Jetty的ProxyServlet. 本文分享自华为云社区<Jetty ...
- Mysql中的Join详解
一.Simple Nested-Loop Join(简单的嵌套循环连接) 简单来说嵌套循环连接算法就是一个双层for 循环 ,通过循环外层表的行数据,逐个与内层表的所有行数据进行比较来获取结果,当执行 ...
- 利用VAR模型科学管理仓位,提升策略效率
更多精彩内容,欢迎关注公众号:数量技术宅,也可添加技术宅个人微信号:sljsz01,与我交流. 期货行情瞬息万变,保证金体系决定了期货交易的杠杆属性.保证金放多了,资金利用率低,放少了,可能在大幅度的 ...
- 题解 Time
传送门 首先枚举最大值,两边分别求逆序对的做法是错误的,这里是来自战神的hack数据 1 2 100 99 98 3 97 96 95 94 93 92 91 显然3应该跨过最大值到左边去,所以这个做 ...
- SpringBoot整合ActiveMq实现Queue和Topic两种模式(看不懂你来打我)
目录 一.前言 二.ActiveMq的下载和使用 三.依赖准备 四.yml文件配置 五.配置Bean 六.创建生产者(Queue+Topic) 七.创建消费者(Topic模式下) 八.测试结果(Top ...
- java使用wol远程开机
param类 package com.meeno.framework.wol.params; import lombok.Getter; import lombok.NoArgsConstructor ...