windows phone 数据传递
来源:互联网 发布:淘宝抢红包软件被骗 编辑:程序博客网 时间:2024/05/17 08:57
Windows Phone 7的页面间传参有三种方式。为了方便描述,我们将场景设定为:从A页面导航到B页面。
第一种方法:QueryString
这种传参方式继承自传统的网页开发模式。在A界面中,调用NavigationService.Navigate() 方法时,所传递的Uri不仅仅是B页面的xaml文件地址,还包括字符串格式的参数。具体格式如下:
"/PageB.xaml?param1=stringValue1¶m2=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
- windows phone 数据传递
- windows phone 数据传递
- windows phone:页面间传递数据
- Windows Phone 7 MVVM模式数据绑定和传递参数
- Windows Phone 7 MVVM模式数据绑定和传递参数
- windows phone:Windows Phone 的数据
- windows phone:数据绑定
- Windows Phone 7 编成之- 6.2从源页面传递数据到目的页面
- Windows Phone 7 编成之- 6.3 页面之间数据共享和传递
- Windows Phone 页面之间参数传递方法
- Windows Phone读取本地数据
- windows phone 开发-数据缓存
- windows phone中的数据绑定
- WINDOWS PHONE 数据绑定笔记
- windows phone:数据绑定(二)
- windows phone:数据绑定思想
- Windows Phone 模拟器无法保存数据库数据
- Windows Phone开发(14):数据模板
- c语言函数内为外部分配空间问题
- 步一步 Mac OS X 与 Windows 7 双系统共存 的“黑苹果” 电脑 安装 入门
- SQLProgress 的导出功能源代码出售 Delphi7
- 冒泡排序
- selenium remote control 实例(java code)
- windows phone 数据传递
- T-SQL查询进阶--详解公用表表达式(CTE)
- 2012年学习计划
- 1简述seo细节成就高权重
- 我的csdn的第三课的总结———淮师杨建波
- WPF布局控件的选用策略
- 解决SpringIDE中无法出现SVN
- (转载的一些话)其实你未必非要做个“杜拉拉”
- Hibernate学习笔记