Windows Phone開發(7):當好總舵主 轉:http://blog.csdn.net/tcjiaan/article/details/7281421

來源:互聯網
上載者:User

吹完了頁面有關的話題,今天我們來聊一下頁面之間是如何導航的,在更多情況下,我們的應用程式不會只有一個頁面的,應該會有N個,就像我們做案頭應 用開發那樣,我們一個應用程式中可能不止一個表單(極簡單的程式除外),我們要處理表單之間的切換;同理地,在進行Web開發的時候,我們的Web應用程式可能也不止一個頁面,我們要處理頁面之間的切換。當然了,在我們的手機應用中,同樣需要這種操作,我們稱之為“導航”,作為開發人員,我們全盤操控頁面之間的切換,所以說,我們也當了App的“總舵主”。

 

  一、如何進行導航。進行頁面導航的一種簡單方法就是使用HyperlinkButton控制項的NavigateUri屬性來指定要導航的目標頁面的XAML檔案的URI,下面通過一個簡單的例子來試試吧。

建立一個WP應用項目,在首頁面中放一個HyperlinkButton控制項,把NavigateUri的值設為 /pageSecond.xaml,接著建立一個頁面,命名為pageSecond.xaml。

[html] view plaincopyprint?

  1. <HyperlinkButton Content="跳到頁面二" Height="78" HorizontalAlignment="Left" Margin="126,86,0,0" Name="hyperlinkButton1" VerticalAlignment="Top" Width="216" FontSize="32" FontStyle="Normal" FontStretch="Normal"  
  2.                   NavigateUri="/pageSecond.xaml"/>  

 

第二種導航方法是通過代碼方式實現,如按鈕的單擊事件。

[csharp] view plaincopyprint?

  1. private void button1_Click(object sender, RoutedEventArgs e)  
  2. {  
  3.     this.NavigationService.Navigate(new Uri("/pageSecond.xaml", UriKind.Relative));  
  4. }  

 

二、OnNavigatedFrom 方法和OnNavigatedTo 方法。1、當使用者即將離開當前頁時,將調用OnNavigatedFrom 方法;2、當使用者從其它頁面導航到該頁面時調用OnNavigatedTo 方法。 相信大家多寫一些代碼測試一下,這個就很好理解了。A、在首頁面中添加以下代碼。 [csharp] view plaincopyprint?

  1. // 離開首頁面  
  2. protected override void OnNavigatedFrom(System.Windows.Navigation.NavigationEventArgs e)  
  3. {  
  4.     base.OnNavigatedFrom(e);  
  5.   
  6.     System.Diagnostics.Debug.WriteLine("***** 已離開首頁面。");  
  7. }  

B、在第二個頁面中添加以下代碼。

[csharp] view plaincopyprint?

  1. // 導航到第二個頁面  
  2. protected override void OnNavigatedTo(System.Windows.Navigation.NavigationEventArgs e)  
  3. {  
  4.     base.OnNavigatedTo(e);  
  5.   
  6.     System.Diagnostics.Debug.WriteLine("*****  Hi,已經來到第二個頁面了。");  
  7. }  

 

然後,你運行程式導航一下,看看“輸出”視窗裡面有什嗎?

 

三、如何在頁面間傳遞參數。

在安卓開發中,從一個Activity到另外一個Activity,需要Intent對象傳遞內容,不過,在WP開發中,我們只需要像WEB頁面那樣在URI在附加上參數即可。

如:/Numbb.xaml?pt1=aaaa&pt2=ccccc。

 

現在,我們把剛才的例子改一下,在首頁面上隨便放一個TextBox,我們要把這個頁面中輸入的內容傳遞到第二個頁面中。

[csharp] view plaincopyprint?

  1. private void button1_Click(object sender, RoutedEventArgs e)  
  2.  {  
  3.      this.NavigationService.Navigate(new Uri("/pageSecond.xaml?str=" + textBox1.Text, UriKind.Relative));  
  4.  }  

在第二個頁面中取出資料。在第二個頁面中取出資料。

[csharp] view plaincopyprint?

  1. // 導航到第二個頁面  
  2. protected override void OnNavigatedTo(System.Windows.Navigation.NavigationEventArgs e)  
  3. {  
  4.     base.OnNavigatedTo(e);  
  5.   
  6.     // 傳遞的參數叫什麼名字,這裡就按什麼名字來取。  
  7.     string pv = this.NavigationContext.QueryString["str"];  
  8.     this.textBlock1.Text = pv;  
  9. }  

 

 

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.