Windows Phone 页面之间参数传递方法

转载 2013年12月02日 11:37:31
目前对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 { getset;}
}

  假设从页面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 { getset; }

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


Web页面之间参数传递方法

在WEB环境中页面之间的数据传递可以通过传统的URL参数传递和会话级传递以及通过ASP.NET服务器控件传递页面值。 1使用Querystring Querystring是一种非常简单的传...

Windows phone开发初体验之(三)-参数传递

在上一节我们知道了如何处理WindowsPhone的页面导航同时也实现了两个页面之间的数据传递。在实际开发中我们还需要为两个页面传递数据。经过看官方文档和网上资料搜集,总结参数传递主要有以下的四种方式...

一天一天学 windows phone 引言 + 大概认知 之 参数传递(四)

页面之间传递参数 windows phone 的参数传递和web 差不多。用“?”号传递 多个参数的时候用 “&”做分隔。 我接着昨天的项目继续添加一个FourPage.xaml 在昨天的ThreeP...

11. jsp与servlet之间页面跳转及参数传递实例

1.从一个jsp页面跳转到另一个jsp页面时的参数传递     (1)使用request对象获取客户端提交的信息     login.jsp页面代码如下: ...

微信小程序详解——页面之间的跳转方式【路由】和参数传递

微信小程序拥有web网页和Application共同的特征,我们的页面都不是孤立存在的,而是通过和其他页面进行交互,来共同完成系统的功能。今天我们来研究小程序页面之间的跳转方式。 1....

微信小程序表单验证及页面之间参数传递

本篇文章主要以两个页面为例,介绍了小程序的表单验证的js代码和如何将一个页面中获取到用户的数据传入下一个页面,纯个人手写,不好之处希望大家指正。 首先给大家展示的是表单验证的效果,主要是通过弹框来显示...

JQuery Mobile 两个页面之间的参数传递

index.html 页面 $(document).bind('pagebeforechange',function(e, data){ if ( typeof data.toPage !=...

jsp与servlet之间页面跳转及参数传递实例

1.从一个jsp页面跳转到另一个jsp页面时的参数传递     (1)使用request对象获取客户端提交的信息     login.jsp页面代码如下: [java] view...

页面之间参数传递3.1--Struts标签,Ajax

接着页面之间参数传递--Struts标签,继续。这次再与Ajax进行结合 参数获取流程: 1.点击a.jsp中的超链接 (1)a标签提交一个参数(id) (2)第一个form表单提交3个参数(id,n...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Windows Phone 页面之间参数传递方法
举报原因:
原因补充:

(最多只允许输入30个字)