Windows Phone開發(7):當好總舵主

來源:互聯網
上載者:User

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

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

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

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

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

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

二、OnNavigatedFrom 方法和OnNavigatedTo 方法。1、當使用者即將離開當前頁時,將調用OnNavigatedFrom 方法;2、當使用者從其它頁面導航到該頁面時調用OnNavigatedTo 方法。相信大家多寫一些代碼測試一下,這個就很好理解了。A、在首頁面中添加以下代碼。
        // 離開首頁面        protected override void OnNavigatedFrom(System.Windows.Navigation.NavigationEventArgs e)        {            base.OnNavigatedFrom(e);            System.Diagnostics.Debug.WriteLine("***** 已離開首頁面。");        }

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

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

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

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

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

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

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

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

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

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

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.