目前对WP7开发正在研究,对页面之间参数传递进行了一个小总结,有不正确的地方,欢迎大家指正。。 WP7编程采用的技术是Silverlight,页面之间参数传递的方式主要有 通过NavigationContext的QueryString方式; 通过程序的App类设置全局变量; 通过PhoneApplicationService类的State属性; 通过NavigationEventArgs事件类的Cont
  

  目前对WP7开发正在研究,对页面之间参数传递进行了一个小总结,有不正确的地方,欢迎大家指正。。

  WP7编程采用的技术是Silverlight,页面之间参数传递的方式主要有

  通过NavigationContext的QueryString方式;

  通过程序的App类设置全局变量;

  通过PhoneApplicationService类的State属性;

  通过NavigationEventArgs事件类的Content属性设置

  1.通过NavigationContext的QueryString函数。

  首先通过NavigationService类进行设置导航至Page1页面。

NavigationService.Navigate(new Uri("/Page1.xaml?id=1",UriKind.Relative));

 

  在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 partial class App:Application

{

       public int ID { get; set;}

}

  假设从页面Page1中需要把参数传递给Page2页面中,可以先在Page1页面中先设置;

App app = Application.Current as App;  

app.Id= 1; //设置传递参数;

  在Page2页面获取设置的参数值;

App app = Application.Current as App;
int id = app.ID; //获取在Page1页面传递参数;

  3. 通过PhoneApplicationService类的State属性;

  由于PhoneApplicationService类的State是一个IDictionary类型,因此,可以存储任何对象,不过这个对象必须是可序列化(serializable)的。

  注:PhoneApplicationService类,需要访问命名空间using Microsoft.Phone.Shell;

  在程序中,可以不需要自己创建PhoneApplicationService的实例,通过PhoneApplicationService的静态属性Current就可以获取到已有的PhoneApplicationService实例

  在Page1页面中设置参数;

protected override void OnNavigatedFrom(System.Windows.Navigation.NavigationEventArgs e)

{

     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中获取

protectedoverridevoidOnNavigatedTo(System.Windows.Navigation.NavigationEventArgse)

{
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事件类的向目标页面注入一些"传递内容"。

protected override void OnNavigatedFrom(System.Windows.Navigation.NavigationEventArgs e)

{

    var targetPage = e.Content as Page2;

    if (targetPage!=null)

    {

        targetPage.ID= 1; //设置参数值

    }

}

  在页面Page2中获取参数值;

public int ID { get; set; }

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 页面之间参数传递方法的更多相关文章

  1. js jquery 实现html页面之间参数传递(单一参数、对象参数传递)

    最近自己在忙着做毕业设计,后台程序员,前端菜鸡,因为需要,所以实现了html页面之间参数传递.------jstarseven .菜鸡的自我修养. 页面A代码如下: <!DOCTYPE html ...

  2. 浅谈MVC页面之间参数传递

    关于MVC页面之间的传值,有多种方式,下面,我们就Html.RenderAction 方式 和 Html.RenderPartial 方式 来给大家分享一下有什么不同. 一.Html.RenderAc ...

  3. asp.net页面之间传值方法详解

    asp.net中页面之间传值我们用得最多的就是get,post这两种了,其它的如session,appliction,cookie等这些相对来说少用也不是常用的,只是在特殊情况下在使用了. 1. Ge ...

  4. asp.net页面与页面之间参数传递

    传值asp文件send.aspx 代码如下 复制代码 <form id="form1" runat="server" action="recei ...

  5. html中 iframe子页面 与父页面之间的方法调用 ;

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...

  6. iframe 父页面与子页面之间的方法的相互调用

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...

  7. wx小程序自定义组件与页面之间参数传递

    在开发中,很多页面中会使用相同的组件,这时可以将具有相同信息的部分封装成一个组件,方便开发中调用.在调用中可能会涉及到数据的传递问题,例如页面与组件,组件与组件直接的数据传递. 首先看看页面与组件直接 ...

  8. iframe 父页面与子页面之间的方法的相互调用【转】

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...

  9. Javascript页面之间参数传递 (前端)

    一.来源:tongfang [系统管理员] --[系统管理] 的"SysLeftNavView.ascx.cs 用户插件 usercontrol 左侧菜单导航: <li>< ...

随机推荐

  1. 天梯赛 L2-008 最长对称子串

    题目是PTA的天梯赛练习集中的L2-008 https://pintia.cn/problem-sets/994805046380707840/problems/994805067704549376 ...

  2. Spring学习01(IOC)

    1.Spring概述 简介 2002年,Rod Jahnson首次推出了Spring框架雏形interface21框架. 2004年3月24日,Spring框架以interface21框架为基础,经过 ...

  3. ECDSA—模加减模块

    如果a,b GF(P),则加法运算a+b=r (mod p),其中r满足0<r<p-1,即a+b除以p的余数,该操作成为模p加法.对于模减运算可以视为另类的模加运算,即a+(-b)=k ( ...

  4. Spring系列之多个数据源配置

    前言 在上篇文章讲到了如何配置单数据源,但是在实际场景中,会有需要配置多个数据源的场景,比如说,我们在支付系统中,单笔操作(包含查询.插入.新增)中需要操作主库,在批量查询或者对账单查询等对实时性要求 ...

  5. kubebuilder实战之一:准备工作kubebuilder实战之一:准备工作

    欢迎访问我的GitHub https://github.com/zq2599/blog_demos 内容:所有原创文章分类汇总及配套源码,涉及Java.Docker.Kubernetes.DevOPS ...

  6. 黑马JVM教程——自学笔记(三)

    四.类加载与字节码技术 4.1.类文件结构 首先获得.class字节码文件 方法: 在文本文档里写入java代码(文件名与类名一致),将文件类型改为.java java终端中,执行javac X:.. ...

  7. 【编程语言】Matlab 学习记录

    title: Matlab Learning Record date: 2020-05-23 20:11:26 author: liudongdong1 img: https://gitee.com/ ...

  8. Asp.NetCore 中Aop的应用

    前言 其实好多项目中,做一些数据拦截.数据缓存都有Aop的概念,只是实现方式不一样:之前大家可能都会利用过滤器来实现Aop的功能,如果是Asp.NetCore的话,也可能会使用中间件: 而这种实现方式 ...

  9. 【GIS】点图层符号的方向和大小

    方向:根据属性字段设置点图层中每个要素的符号方向和大小, 1 所有要素使用同一种符号---简单渲染 在图层属性---符号系统---单一符号中进行设置,首先设置符号,在后面的[高级]选项按钮中分别设置[ ...

  10. Javascript - Vue - 在vscode里使用webpack

    cnpm(node package manager)和webpack模块 npm是运行在node.js环境下的包管理工具,使用npm可以很快速的安装前端文件里需要依赖的那些项目文件,比如js.css文 ...