页间跳转
在ASP.NET中我们可以通过SESSION,HTTP REQUEST URL STRING,COOKIE,话题扯远了,silverlight又不是web。在silverlight中有个NavigationService类,提供了诸如GoBack(),GoNext(),Navigate(Uri source)等几个方法。每一个PhoneApplicationPage实例都有一个类型为NavigationService的属性。所以我们可以通过调用类似Page.NavigationService.Navigate(“/Action.xaml”);这种方式来导航至对应窗口。
由于比较简单所以具体方法不再叙述。这里有几点注意的地方:
a.使用NavigationService进行的页间导航只会发生在本应用程序的页面之间。
b.在由A导航至B的过程中,A的Unloaded事件被触发,B的Loaded事件被触发。
页间传参
NavigationService.Navigate(Uri source)中的Uri能够使用像http request url那样的方式写入参数,比如“page.NavigationService.Navigate(new Uri("/PhonePage1.xaml?a=1", UriKind.Relative));”,那么可以在导航目标页面上使用NavigationContext类的QueryString方法来获取参数,同NavigationService一样,每一个PhoneApplicationPage都含有一个NavigationContext类型的公有属性。
旋转屏幕
这个就很小儿科了,就一个api完事,设置PhoneApplicationPage的SupportedOrientations 属性可以调整屏幕方向,OrientationChanging事件会在旋转过程中触发。
SupportedOrientations = SupportedPageOrientation.Portrait | SupportedPageOrientation.Landscape
this.OrientationChanging += new EventHandler<OrientationChangedEventArgs>(Orientchanged);