Windows Phone 7 Tip

来源:网络 责任编辑:栏目编辑 发表时间:2013-07-01 07:41 点击:

 

有朋友问起Windows Phone 7页面导航(Page Navigation)时,如何在不同页面之间进行传递参数。我们在此整理一下。

Windows Phone 7的页面间传参有三种方式。为了方便描述,我们将场景设定为:从A页面导航到B页面。

 

第一种方法:QueryString

这种传参方式继承自传统的网页开发模式。在A界面中,调用NavigationService.Navigate() 方法时,所传递的Uri不仅仅是B页面的xaml文件地址,还包括字符串格式的参数。具体格式如下:

"/PageB.xaml?param1=stringValue1&param2=stringValue2"

 

xaml文件地址后跟一个问号,代表参数声明的开始。多个参数用& 符号间隔。

而在B页面中,需要重载基类的OnNavigatedTo 方法,并从中获得所传递的参数值,示例代码如下:

string paramValue1 = NavigationContext.QueryString["param1"];

string paramValue2 = NavigationContext.QueryString["param2"]; 

该传参方式简单易用,唯一的不足之处是仅支持字符串类型。

 

第二种方法:全局参数

在App.xaml.cs 文件中的App 类中,定义任意类型的public 属性(例如param3)。

在A页面中,设置该属性变量值,代码如下:

(App.Current as App).param3 = someValue;

在B页面中,访问该变量,代码如下:

someVariable = (App.Current as App).param3;

这种传参方式非常灵活,支持全局访问。

 

第三种方法:NavigationEventArgs.Content

其实即将离开A页面时,可以得到前往页面的实例(页面导航时,首先创建B页面的实例,再把当前显示内容从A页面替换为B页面)。因此,我们可以探知导航的目标页面是否是B页面,如果是,就向B页面“注入”一些内容。

A页面代码如下:

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

{

    var targetPage = e.Content as PageB;

    if (targetPage!=null)

    {

        targetPage.param4 = someValue;

    }

}

 

B页面代码如下:

public ParamType param4 { get; set; }

 

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

{

    if (param4 != null)

    {

        textBlock3.Text = param4.Name;

    }

}

该方法同样支持各种参数类型。

 

以上各种参数传递的方式,孰优孰劣,就见仁见智了。

也许还会有人补充说,某些framework(例如prism、MVVMLightToolkit等) 还支持更多中传参方式(如messaging),但个人感觉那些东东简直”飞机拉马车“,不太适合小规模的手机应用开发。

 

OK,希望对各位有所帮助!代码送上:

下载代码 http://www.2cto.com/uploadfile/2011/1117/20111117030404645.zip

 

作者: 李靖南Email: elecpiano@gmail.com

新浪微博: http://weibo.com/zengnami

MSN: zengnami@hotmail.com

QQ: 52717278

 

关于作者:

从事微软平台解决方案的设计与实现。主要专注方于Silverlight 及Windows Phone 7 应用开发,及前者与微软云计算平台(Azure)的结合。

    相关新闻>>

      发表评论
      请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
      用户名: 验证码:点击我更换图片
      最新评论 更多>>

      推荐热点

      • Windows Phone 项目实战之我的微盘(下)
      • Windows Phone 实用开发技巧(26):对DataTemplate中的元素播放
      • Windows Phone 实用开发技巧(25):Windows Phone读取本地数据
      • Windows Phone 实用开发技巧(27):创建透明Tile
      • Windows Phone 知识锦(12月版)
      • Windows Phone实用开发技巧(31):密码加密
      • Windows Phone 项目实战之我的微盘(上)
      • WP7实例篇之土豆搜索器(2)
      • [翻译]WP7 QuickStart-第七篇-布局
      网站首页 - 友情链接 - 网站地图 - TAG标签 - RSS订阅 - 内容搜索
      Copyright © 2008-2015 计算机技术学习交流网. 版权所有

      豫ICP备11007008号-1