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"];
}
}
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);
}
}
}
以上二種的參數傳遞方式使用時機第一種是使用簡單幾個變數,第二種使用時機比較適合在大量參數集合,以上是個人使用的心得感想