[Windows Phone] 導覽控制項的傳遞參數(透過 Query String)

本篇文章主要示範如何使用導覽控制項的傳遞參數,透過 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;
        }

 

結果

將第一頁的帳號密碼打好後按確定,就會顯示第二頁,而第二頁會有第一頁傳送過來的帳號密碼資料。

          

 

範例檔

傳遞參數.rar

 

相關參考與引用

NavigationContext.QueryString Property