本篇文章主要示範如何使用導覽控制項的傳遞參數,透過 Query String 來將第一頁的資料傳遞到第二頁。
前言
本篇文章主要示範如何使用導覽控制項的傳遞參數,透過 Query String 來將第一頁的資料傳遞到第二頁。
實作
step1 建立專案。
step2 畫面設計。
產生 xaml 的程式如下:
<Grid x:Name="ContentPanel" Grid.Row="1" Margin="10,0,14,0">
<TextBlock HorizontalAlignment="Left" Margin="118,62,0,0" TextWrapping="Wrap" Text="輸入帳號及密碼" VerticalAlignment="Top" FontSize="30"/>
<TextBlock HorizontalAlignment="Left" Margin="58,164,0,0" TextWrapping="Wrap" Text="帳號:" VerticalAlignment="Top" FontSize="30"/>
<TextBlock HorizontalAlignment="Left" Margin="58,236,0,0" TextWrapping="Wrap" Text="密碼:" VerticalAlignment="Top" FontSize="30" RenderTransformOrigin="0.455,1.165"/>
<TextBox x:Name="acc" HorizontalAlignment="Left" Height="72" Margin="145,150,0,0" TextWrapping="Wrap" VerticalAlignment="Top" Width="211"/>
<PasswordBox x:Name="pwd" HorizontalAlignment="Left" Margin="145,227,0,0" VerticalAlignment="Top" Width="211" Height="72"/>
<Button x:Name="btn" Content="確定" HorizontalAlignment="Left" Margin="161,361,0,0" VerticalAlignment="Top" Click="btn_Click"/>
</Grid>
step3 產生 btn_Click 的事件,並撰寫轉跳頁面的程式碼,其中加入了 Query String,變數包含 acc1 和 pwd1。
private void btn_Click(object sender, RoutedEventArgs e)
{
//跳去第二頁並傳兩個參數"acc1"及"pwd1"
NavigationService.Navigate(new Uri("/Page1.xaml?acc1=" + acc.Text + "&pwd1=" + pwd.Password, UriKind.Relative));
}
step4 新增一個項目 [Windows Phone 直向頁面],名稱為 Page1.xaml。
step5 設計 Page1.xaml 畫面。
產生 xaml 的程式如下:
<Grid x:Name="ContentPanel" Grid.Row="1" Margin="12,0,12,0">
<TextBlock HorizontalAlignment="Left" Margin="89,68,0,0" TextWrapping="Wrap" Text="Hello~~~~您好" VerticalAlignment="Top" Width="224" Height="50" FontSize="30"/>
<TextBlock x:Name="tb" HorizontalAlignment="Left" Margin="43,172,0,0" TextWrapping="Wrap" Text="TextBlock" VerticalAlignment="Top" RenderTransformOrigin="0.162,0.487" FontSize="30"/>
<Button x:Name="btn1" Content="返回" HorizontalAlignment="Left" Margin="155,274,0,0" VerticalAlignment="Top" Click="btn1_Click"/>
</Grid>
step6 產生 btn1_Click 事件與撰寫程式碼,來接收從第一頁傳送過來的 Query String 資料。
private void btn1_Click(object sender, RoutedEventArgs e)
{
NavigationService.GoBack();
}
protected override void OnNavigatedTo(System.Windows .Navigation .NavigationEventArgs e)
{
string acc = "", pwd = "";
//將參數acc1的值設定給acc
if (NavigationContext.QueryString.TryGetValue("acc1", out acc))
tb.Text = "帳號:" + acc + "\n";
//將參數pwd1的值設定給pwd
if (NavigationContext.QueryString.TryGetValue("pwd1", out pwd))
tb.Text += "密碼:" + pwd;
}
結果
將第一頁的帳號密碼打好後按確定,就會顯示第二頁,而第二頁會有第一頁傳送過來的帳號密碼資料。
範例檔