首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 移动开发 > 移动开发 >

WP中的领航服务及不同页面间的参数传递方法

2012-07-02 
WP中的导航服务及不同页面间的参数传递方法在Android应用中,我们使用Intent在不同页面之间进行导航,那么在

WP中的导航服务及不同页面间的参数传递方法

在Android应用中,我们使用Intent在不同页面之间进行导航,那么在Windows Mobile中,其对应物是什么呢?答案就是:

NavigationService

关于其类型定义及属性方法等,请参考MSDN站点。
在不同页面间导航,就不可避免的遇到需要传递参数的情形。在Android应用中,我们可以方便的使用intent.putExtras来实现,在WP中则不行。下面介绍一下在WP中的传参方式。
1. 对于简单的参数,可以直接将参数附在导航目标后,作为查询参数。例如:NavigationService.Navigate(new Uri("SecondPage.xaml?param1=1&param2=true", UriKind.Relative));在目标页面中,OnNavigateTo()方法中可以通过如下方式来读取参数:NavigationContext.QueryString.TryGetValue(?"category",?out?category);NavigationContext.QueryString.TryGetValue(?"title",?out?title);
2. 利用PhoneApplicationServicePhoneApplicationService有一个State属性,它是Dictionary类型的,允许你存取任意值。但也有其限制,放进State里的对象必须是可序列化的。

PhoneApplicationService.Current.State["Color"] = clr;?

3. 利用App类来共享数据应用中的所有页面都可以方便的访问Application的子类App。这样我们就可以利用Application.Current来获取App的实例,然后用它来共享不同页面间需要的数据。譬如,我们可以在App类中添加一个属性:public partial class App : Application{// public property for sharing data among pagespublic SharedParameter SharedParam { set; get; }…}
当需要传递数据时,在第一个页面的onNavigateFrom()方法里,将需要传递的参数赋给App的相应属性,在接下来的页面实例中就可以访问了。
4. 在起始页面的OnNavigatedFrom方法中设置目标页面的属性。
在目标页面中定义需要传递的属性:?public ChannelItem selectedChannel { get; set; }
在其实页面中通过设置NavigationEventArgs参数的Content属性来进行传递:protected override void OnNavigatedFrom(NavigationEventArgs args)? ? ? ? {? ? ? ? ? ? if (contentListBox.SelectedItem != null)? ? ? ? ? ? {? ? ? ? ? ? ? ? if (contentListBox.SelectedItem is ChannelItem)? ? ? ? ? ? ? ? {? ? ? ? ? ? ? ? ? ? ChannelItem selectedItem = (ChannelItem)contentListBox.SelectedItem;
? ? ? ? ? ? ? ? ? ? if (args.Content is RSSChannelPage)? ? ? ? ? ? ? ? ? ? {? ? ? ? ? ? ? ? ? ? ? ? (args.Content as RSSChannelPage).selectedChannel = selectedItem;? ? ? ? ? ? ? ? ? ? }? ? ? ? ? ? ? ? }? ? ? ? ? ? }? ? ? ? }
以上方法均参考自《Programming Windows Phone7》 Chapter 6.

热点排行