NavigationService作用及描述:用以處理Windows phone頁面的導航
常用屬性
屬性名稱 |
說明 |
BackStack |
擷取一個 IEnumerable,它用於枚舉後退導航記錄中的條目。 |
CanGoBack |
擷取一個值,該值指示在後退導航記錄中是否至少存在一個條目。 |
CanGoForward |
擷取一個值,該值指示在前進導航記錄中是否至少存在一個條目。 |
CurrentSource |
擷取當前顯示的內容的統一資源識別項 (URI)。 |
Source |
擷取或設定當前內容或導航到的內容的統一資源識別項 (URI)。 |
常用方法
方法名稱 |
說明 |
GoBack() |
導航到後退導航記錄中的最新條目;如果後退導航時沒有條目,則引發異常。所以在這裡我們就注意了,我們可以先判斷下是否可以後退,這就用到了上面我們介紹的CanGoBack屬性了。 |
GoForward() |
導航到前進導航記錄中的最新條目,如果前進導航時沒有條目,則引發異常。對於 Windows Phone,該方法始終引發異常,因為沒有前進導航堆棧。同樣的我們也需要在這裡判斷是否可以導航到下一頁【CanGoForward】 |
Navigate(Uri uri) |
對由統一資源識別項 (URI) 指定的內容的導航。參數為一個Uri對象 |
NavigationContext
作用及描述:表示導航操作的狀態。
常用的屬性
屬性名稱 |
說明 |
QueryString |
擷取查詢字串值的集合。其結果是一個IDictionary<string, string>索引值對 |
給出的Demo樣本:
首先看實現的效果
主要原始碼:
MainPage.xaml
<Grid x:Name="ContentPanel" Grid.Row="1" Margin="12,0,12,0"> <Button Content="跳轉到第二頁並帶參數" Height="72" HorizontalAlignment="Left" Margin="53,220,0,0" Name="button1" VerticalAlignment="Top" Width="352" Click="button1_Click" /> <TextBlock Height="30" HorizontalAlignment="Left" Margin="27,107,0,0" Name="textBlock1" Text="參數值:" VerticalAlignment="Top" /> <TextBox Height="72" HorizontalAlignment="Left" Margin="129,84,0,0" Name="textBox1" Text="參數。。。" VerticalAlignment="Top" Width="460" /> </Grid>
MainPage.xaml.cs 為按鈕添加的Click事件
private void button1_Click(object sender, RoutedEventArgse) { //建立一個Uri對象 Uri uri = new Uri("/Second.xaml?msg="+ textBox1.Text, UriKind.Relative); //導航到第二頁 NavigationService.Navigate(uri); }
Second.xaml檔案中的布局:
<Grid x:Name="ContentPanel" Grid.Row="1" Margin="12,0,12,0"> <TextBlock Height="30" HorizontalAlignment="Left" Margin="9,69,0,0" Name="textBlock1" Text="第一頁傳過來的值:" VerticalAlignment="Top" /> <TextBlock Height="30" HorizontalAlignment="Left" Margin="214,69,0,0" Name="textBlock2" Text="TextBlock" VerticalAlignment="Top" /> <Button Content="返回到上一頁" Height="72" HorizontalAlignment="Left" Margin="54,230,0,0" Name="button1" VerticalAlignment="Top" Width="300" Click="button1_Click" /> </Grid>
Second.xaml.cs檔案,我們在頁面的loaded事件取出傳過來的值
private voidPhoneApplicationPage_Loaded(object sender, RoutedEventArgs e) { string msg = ""; if (NavigationContext.QueryString.TryGetValue("msg", outmsg)) { this.textBlock2.Text = msg; } } private voidbutton1_Click(object sender, RoutedEventArgs e) { if(NavigationService.CanGoBack) { NavigationService.GoBack(); } }
如需轉載引用請註明出處:http://blog.csdn.net/jiahui524