Windows Phone 7 表單切換參數傳遞

  • 4539
  • 0

Windows Phone 7 表單切換參數傳遞

開發應用程式一定會有很表單畫面,在Windows Phone 7要如何切換這些頁面那就需要使用NavigationService.Navigate()方法來切換頁面,不像WM 6.5 使用 Form 變數來打開及縮小視窗的方式在使用Show 方法打開。若表單之間參數傳遞可以使用NavigationContext.QueryString或PhoneApplicationService.Current.State下面就來試一下這二種方式:

1NavigationContext.QueryString:新增二個Page

     Page1.xaml.cs畫面加入一個按鈕按二下進入編緝程式碼

      private void button1_Click(object sender, RoutedEventArgs e)
       {

          //加入二個變數值為Id、Name 在等於後方放上變數值每加一個變數中間要多加一個&
          this.NavigationService.Navigate(new Uri("/Page1.xaml?Id=WP7&Name=WindowsPhone7", UriKind.Relative));
       }

     Page2.xaml.cs加入下列程式碼

     protected override void OnNavigatedTo(NavigationEventArgs e)
       {
           //在Uri上找出變數為Id取出等於後方值放到textBox1元件

           if (this.NavigationContext.QueryString.ContainsKey("Id"))
           {
              textBox1 .Text  = this.NavigationContext.QueryString["Id"];
           }
       }

image    image

2PhoneApplicationService.Current.State

  Page1.xaml.cs畫面加入一個按鈕按二下進入編緝程式碼

   private void button1_Click(object sender, RoutedEventArgs e)
       {
           List<string> list = new List<string>();
           list.Add("WP7");
           list.Add ("WM6.5");
           PhoneApplicationService.Current.State.Add("mobile",list);
           this.NavigationService.Navigate(new Uri("/Page2.xaml", UriKind.Relative));

       }

  Page2.xaml.cs加入下列程式碼

     protected override void OnNavigatedTo(NavigationEventArgs e)
       {
          if (PhoneApplicationService.Current.State.ContainsKey("mobile"))
           {
               List <string> list=PhoneApplicationService.Current.State["mobile"] as List <string>;
               foreach (string s in list)
               {
                   listBox1.Items.Add(s);
               }
           }

       }

image     image  

 

以上二種的參數傳遞方式使用時機第一種是使用簡單幾個變數,第二種使用時機比較適合在大量參數集合,以上是個人使用的心得感想