目前对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. 文件上传之WAF绕过及相安全防护

    文件上传在数据包中可修改的地方 Content-Disposition:一般可更改 name:表单参数值,不能更改 filename:文件名,可以更改 Content-Type:文件 MIME,视情况 ...

  2. 一、MinIO的基本概念

    MinIO的官方网站非常详细,以下只是本人学习过程的整理 一.MinIO的基本概念 二.Windows安装与简单使用MinIO 三.Linux部署MinIO分布式集群 四.C#简单操作MinIO 一. ...

  3. .jsp文件的使用和理解以及一些小练习和Listener监听器

    什么是 jsp,它有什么用? jsp 的全换是 java server pages.Java 的服务器页面.jsp 的主要作用是代替 Servlet 程序回传 html 页面的数据.因为 Servle ...

  4. 用kivy学习制作简易调色画板app

    制作一款简易的调色画板,要用到的知识:页面布局.ToggleButton.ToggleButtonBehavior.get_color_from_hex(兼容十六进制编码颜色):功能上要可以选择颜色, ...

  5. Java ArrayList【笔记】

    Java ArrayList[笔记] ArrayList ArrayList基本结构 ArrayList 整体架构比较简单,就是一个数组结构 源码中的基本概念 index 表示数组的下标,从 0 开始 ...

  6. 遗传算法Genetic Algorithm

    遗传算法Genetic Algorithm 好家伙,回回都是这个点,再这样下去人估计没了,换个bgm<夜泊秦淮>,要是经典咏流传能投票选诗词,投票选歌,俺一定选这个 开始瞎叨叨 遗传算法的 ...

  7. BaiduSpider:爬取百度的利器

    视频链接:https://www.zhihu.com/zvideo/1272864710321516544 BaiduSpider是一个能够爬取百度搜索结果的Python爬虫,轻量但强大.目前支持百度 ...

  8. 官宣 .NET 6 预览版 6

    我们很高兴宣布.NET 6 预览版6问世啦.预览版6 是我们RC版发布之前的倒数第二个预览版. 我们将有两个RC版. 此版本本身相对较小,而预览版7会更大. 在那之后,我们将进行质量修复,直到11 月 ...

  9. MATLAB—M函数文件

    文章目录 一.M文件 1.脚本文件和函数文件的区别 二.M函数文件 1.创建方法 2.文件形式 2.函数形参及注释 3.函数的调用 4.函数变量 5.主函数.子函数 三.函数句柄 一.M文件 首先,要 ...

  10. 使用JS获取SessionStorage的值

    参考:https://www.jb51.net/article/132729.htm 获取sessionStorage的意义 首先获取它是为了将获得的信息输出或者alert():让人容易看到, 其次, ...