技术开发 频道

Windows Phone 7框架和页面导航开发

  【IT168技术】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();
        }
    }

Windows Phone 7平台的框架和页面导航
▲图 1 框架是导航堆栈里最顶层的元素

  方向变化

  为了告诉应用程序必须支持不同的方向,你需要设置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;
}
}

  小结

  在这篇文章中,我们看到了基于Silverlight的Windows Phone 7应用程序的导航工作原理,我希望你觉得有趣。

0
相关文章