Windows Phone 7开发学习(二)--页面导航

今天,我们将要讨论在Windows Phone 7中Silverlight的页面导航问题。出于两个原因,这将会很重要。第一,因为你不想在一个xaml中构建自己的程序。第二,通过遵循原则,你的程序将会自动具有手机内置的Back按钮的功能。它允许你在回到先前想要回到先前状态的时候能够跳转到相应程序。我们明天将会更多的讨论Back按钮。

页面间有很多方式跳转,但是我将会集中介绍一种。我将会介绍简单网页导航,这正像他听起来一样,我们像网页导航一样来跳转。同样有其他的框架允许你实现这个(例如MVVM),但是本着本篇文章的核心,我们将只会介绍一种。

简单的网页导航

我们有不同的页面,并且我们希望给用户一种方式来在其中跳转。让我们建立一个简单的跳转来实现。如下:

1)创建一个新的Windows Phone应用

 

2)添加一些新的Windows Phone垂直页面(页面模式分2种,横屏和竖屏)

 

我们将会在#4中讨论更多关于页面旋转。现在,让我们只是专注于垂直页面。我已近创建了三个新的页面:Pasta.xaml,Sauce.xaml和Cheese.xaml.我们将会使用集中不同的方式来链接这些页面。

3)修改页面的标题,让我们知道在哪个页面上

在每一个你创建的页面上有一个XAML元素名为“Page Title”,并且默认为“page name”。修改这些,这样你将会明显知道自己所在的页面。我喜欢这样做,因为可以减少错误。随着你对复杂工程的深入,你会发现这些代码看起来差不多,为了以后的编写,让我们把这些修改的不一样。

 4)在MainPage.xaml上创建一些超链接

 为了在页面间创建链接,我们有几个不同的选择。第一个是纯xaml方案。为了这样做,我们可以使用HyperlinkButton控件,如下代码:

<HyperlinkButton Content="Pasta" NavigateUri="/Pasta.xaml" Height="30" HorizontalAlignment="Left" Margin="10,10,0,0" Name="hyperlinkButton1" VerticalAlignment="Top" Width="200" />
<HyperlinkButton Content="Sauce" NavigateUri="/Sauce.xaml" Height="30" HorizontalAlignment="Left" Margin="10,10,0,0" Name="hyperlinkButton2" VerticalAlignment="Top" Width="200" />
<HyperlinkButton Content="Cheese" NavigateUri="/Cheese.xaml" Height="30" HorizontalAlignment="Left" Margin="10,10,0,0" Name="hyperlinkButton3" VerticalAlignment="Top" Width="200" />
当你运行你的城西,你将会能够点击任何一个超链接从而转向到特定链接,使用back按钮就爱那个同样将你转向到先前的屏幕。如果你返回的足够远,你将同样发现当你离开程序的第一个屏幕以后就离开了程序。
5)通过代码在不同页面间跳转
如果你更倾向于使用代码而不是xaml来实现,你可使用任何xaml元素实现。例如,我们将会使用一个按钮,在代码中我已经创建了三个按钮,并且每一个都指向同样的事件处理,在现编的c#代码中,你将会看到我实际上是判断哪一个被点击了,然后将用户导向到相应页面。所有页面使用back按钮都将会工作正常。
XAML
<Button x:Name="PastaButton" Content="Pasta" Click="Button_Click" Width="200" Height="75" />
<Button x:Name="SauceButton" Content="Sauce" Click="Button_Click" Width="200" Height="75" />
<Button x:Name="CheeseButton" Content="Cheese" Click="Button_Click" Width="200" Height="75" />
C#
private void Button_Click(object sender, RoutedEventArgs e)
{
	Button clickedButton = sender as Button;

	switch(clickedButton.Name)
	{
		case "PastaButton":
			NavigationService.Navigate(new Uri("/Pasta.xaml", UriKind.Relative));
			break;
		case "SauceButton":
			NavigationService.Navigate(new Uri("/Sauce.xaml", UriKind.Relative));
			break;
		case "CheeseButton":
			NavigationService.Navigate(new Uri("/Cheese.xaml", UriKind.Relative));
			break;
	}
}
 
正如你所看到的,通过简单的使用NavigationService,用户的所有动作都可以被记录并且使用back按钮将会允许他们通过他们的决策树来返回。
下篇,我们将会探索更多的关于back按钮的作用。
原文地址:http://www.jeffblankenburg.com/post/31-Days-of-Windows-Phone-7c-Day-2-Page-Navigation.aspx
 
posted @ 2011-03-09 10:07  simba.liu  阅读(330)  评论(0编辑  收藏  举报