Windows Phone应用程序开发人员都知道可以使用Silverlight和XNA作为开发平台,基于Silverlight的WP页面模型对许多Silverlight开发人员来说是熟悉的(如果你是新手,不妨去MSDN的Silverlight导航概述页面看看),但谈到Windows Phone平台时,还是有些不同的地方。
首先,在Windows Phone 7设备上有一个专用的“后退”硬件按键,其次,应用程序可以不按顺序调用。
有经验的应用程序开发人员可以处理好这种情景,确保应用程序自然地吻合Windows Phone 7的导航模型,提供模仿Windows Phone 7主题的过渡效果。
Windows Phone 7应用程序由称作PhoneApplicationFrame的容器元素组成,它们可以渲染PhoneApplicationPage。
当你创建默认的Windows Phone项目时,默认页面包含下面的代码:
// In App.xaml.cs
public PhoneApplicationFrame RootFrame { get; private set; }
上面这行代码指出框架(Frame)是导航堆栈里的最顶层元素。
// In MainPage.xaml.cs
public partial class MainPage : PhoneApplicationPage { // Constructor public MainPage() { InitializeComponent(); } }
方向变化
为了告诉应用程序必须支持不同的方向,你需要设置SupportedOrientations属性,你也可以使用Orientation属性指定当前的方向,不同方向的页面渲染方法是由设备,Windows Phone 7和应用程序共同决定的。
启动画面可以不看作是一个页面,因为它的显示时间总是很短,也不会保留应用程序的状态,错误对话框和登录页面也可以这样对待,对于短暂性UI屏幕,按下“后退”键时,默认的弹出式调用应该予以拒绝。
对于一个正常的页面,调用“后退”按键时,应用程序应该切换到前一页或退出。
如何在页面之间切换
如果想导航到一个新页面,你可以调用NavigationService.Navigate API,以目标页面的相对URL作为参数提交,例如:
NavigationService.Navigate(new Uri("/Pages/ShoppingCart.xaml", UriKind.Relative));
如果要回到前一页,你可以调用NavigationService.GoBack API,例如:
NavigationService.GoBack();
跨页面传递参数
如果要跨页面传递参数,你的URI应该包含参数,例如:
//Mainpage.xaml.cs
private void buttonNextPage_Click(object sender, RoutedEventArgs e) { NavigationService.Navigate(new Uri("/Pages/ShoppingCart.xaml?msg=" + arg1.Value, UriKind.Relative); }
在目标页面,需要自己写代码来处理传入的参数,例如:
//ShoppingCart.xaml.cs
protected override void OnNavigatedTo(System.Windows.Navigation.NavigationEventArgs e) { base.OnNavigatedTo(e); string argument = ""; if (NavigationContext.QueryString. TryGetValue("msg", out argument)) { textArgument.Text = argument; } }
教师节,汇报老师一份成绩[标签:标题]