1.普通頁面導航
使用HyperlinkButton控制項的NavigateUri屬性進行頁面間的導航。
例如: <HyperlinkButton Content="音樂" Height="30" HorizontalAlignment="Left" Margin="68,65,0,0"
Name="MusicshyperlinkButton" VerticalAlignment="Top" Width="200" NavigateUri="/Views/Musics.xaml" />
NavigateUri:屬性工作表示導航到的頁面的相對位址。
2.使用Button控制項導航。
由於Button控制項沒有Navigate等支援導航的屬性,這裡我們藉助NavigationService的Navigate方法實現頁面導航。
例如註冊Button控制項的Click事件,並添加如下代碼
private void btn_Movies_Click(object sender, RoutedEventArgs e) { NavigationService.Navigate(new Uri("/Views/Musics.xaml",UriKind.Relative)); }
這樣也可以實現頁面的導航。
以上的導航屬於使用頁面所在的相對路徑進行導航,此外還可以使用別名進行導航,這個和Web開發使用的別名導航類似。請看如下解釋。
3.使用別名進行導航.
首先在App.xaml檔案中添加一個名字空間
xmlns:nav="clr-namespace:System.Windows.Navigation;assembly=Microsoft.Phone"
使用別名導航需要使用到上面的添加的名字空間。
然後在
<Application.Resources></Application.Resources>
中添加以下內容,即將導航頁面映射到資源檔中。
<Application.Resources> <nav:UriMapper x:Key="UriMapper"> <nav:UriMapping Uri="Musics" MappedUri="/Views/MusicsPage.xaml"/> <nav:UriMapping Uri="Movies" MappedUri="/Views/MoviesPage.xaml"/> <nav:UriMapping Uri="Ebooks" MappedUri="/Views/EbookPage.xaml"/> <nav:UriMapping Uri="SurferInternet" MappedUri="/Views/SurferInternetPage.xaml"/> </nav:UriMapper> </Application.Resources>
代碼解釋:
Application.Resources表示應用程式的資源,UriMapper 可以看做是一張導航的地圖,它有一些標記,來表示每一張頁面,我們稱把這些標記稱為每張頁面的別名(別名不能重複),每一張頁面都會有一個唯一的所在地址,一般用相對路徑表示,MappedUri屬性工作表示導航頁面的所在路徑即地址。
上面的代碼我們可以看做是在一張地圖上標記了四個地方他們叫做Musics,Movies,Ebooks,SurferInternet,他們都有唯一的路徑和標示名稱。通過訪問這些標示名稱(引用別名)就可以導航到相應的頁面。
添加以上代碼還需在App.xaml.cs檔案中的public App(){......}位置添加如下代碼:
public App(){ this.RootFrame.UriMapper = Resources["UriMapper"] as UriMapper;}
作用是將應用程式的主架構的UriMapper 屬性設定為我們之前所寫得資源檔,可以看做是把一張標示各個頁面的地圖賦給UriMapper ,這樣我們就可以調用了。
調用方式:
首先聲明一個HyperlinkButton控制項,將NavigateUri設定為相應頁面的別名即可例如:
<HyperlinkButton Content="音樂" Height="30" HorizontalAlignment="Left" Margin="68,65,0,0"
Name="MusicshyperlinkButton" VerticalAlignment="Top" Width="200" NavigateUri="Musics" />
這樣便實現了頁面的別名導航。
小建議:這裡可以結合之前的一篇關於頁面間參數傳遞一起看:http://www.cnblogs.com/potential/archive/2012/11/03/2752826.html。
說明:以上內容參考Jake Lin的Windows Phone 視頻而寫。
(著作權,轉載請標明出處)