windows phone 頁面傳值(7)

來源:互聯網
上載者:User

在windows phone 中微軟為我們提供了頁面間傳遞參數的解決方案,下面就為大家介紹使用方法,頁面傳值的案例中我們建立兩個頁面,一個是MainPage另一個是SecondPage頁面;MianPage頁面的主要代碼為:

 

   <Grid x:Name="ContentPanel" Grid.Row="1" Background="Goldenrod" Margin="12,0,12,0"></Grid>
        <TextBlock x:Name="Navigation" Text="導航到第二個頁面" Grid.Row="1" VerticalAlignment="Center" HorizontalAlignment="Center" ManipulationStarted="Navigation_ManipulationStarted"></TextBlock>
    </Grid>

 MainPage 設定好顏色的:

 

 從上面代碼可以看出我們為名為ContentPanel的Grid的屬性Background設定為一個金麒麟色,當點擊名為Navigation的TextBlock元素時,把ContentPanel的Grid的屬性Background設定的顏色傳遞到第二個頁面去;Navigation的事件ManipulationStarted 的隱藏代碼為:

private void Navigation_ManipulationStarted(object sender, ManipulationStartedEventArgs e)        {            //獲得顏色ARGB值            SolidColorBrush scb = (SolidColorBrush)ContentPanel.Background;            Color c = scb.Color;            //參數傳遞格式--知識點①            Uri uri = new Uri("/SecondPage.xaml?Red="+c.R+"&Green="+c.G+"&Blue="+c.B, UriKind.Relative);            this.NavigationService.Source = uri;                                   e.Complete();            e.Handled = true;        }

頁面需要傳遞的值設定好之後,會導航到第二個頁面SecondPage頁面,SecondPage.xaml檔案中的主要代碼為:

 

 
 <Grid x:Name="ContentPanel" Grid.Row="1" Margin="12,0,12,0"></Grid>
        <TextBlock x:Name="Navigation" Text="導航到第-個頁面" Grid.Row="1" VerticalAlignment="Center" HorizontalAlignment="Center" ManipulationStarted="Navigation_ManipulationStarted"></TextBlock>
    </Grid> 

 SecondPage頁面效果:

 

 從上面代碼中看一看出我們並沒有名為ContentPanel的Grid的屬性Background設定顏色值,這裡我們會從隱藏檔案對其背景顏色進行設定,Navigation的事件ManipulationStarted 的隱藏代碼為:

 //textblock的導航時間        private void Navigation_ManipulationStarted(object sender, ManipulationStartedEventArgs e)        {            this.NavigationService.Navigate(new Uri("/MainPage.xaml", UriKind.Relative));            e.Complete();            e.Handled = true;        }

 

 OnNavigatedTo隱藏檔案的方法是:

//活動頁面建構函式之後--知識點②        protected override void OnNavigatedTo(System.Windows.Navigation.NavigationEventArgs e)        {            //以泛型集合的方式獲得傳遞過來數值--知識點③            IDictionary<string, string> para = this.NavigationContext.QueryString;            if (para.Count>0)            {                byte r = Byte.Parse(para["Red"]);                byte b = Byte.Parse(para["Blue"]);                byte g = Byte.Parse(para["Green"]);                ContentPanel.Background=new SolidColorBrush(Color.FromArgb(255,r,g,b));                            }                   }

此方法獲得從MainPage也傳遞類的參數,我們進行解析,根據解析到的結果設定 SecondPage中ContentPanel.Background屬性,這也就完成參數的傳遞了;

 

  

 

這裡參數傳遞的格式是我們要注意的,參數是在相對URI後緊接著是問號(?),之後就是索引值對的形式了(key=value),如果參數是多個,則需要用一個&符號隔開

 

這裡需要用到的一個方法,即OnNavigatedTo;官方給出的結識是:當頁面變為架構中的活動頁面時調用,可以理解為從A頁面導航到B頁面的時候,此時B頁面變為活動頁面,這時候調用該方法,此方法是在活動頁面建構函式載入完成之後被調用,也就是說建構函式執行完成之後就會立即執行此方法

 

NavigationContext類是擷取導航的狀態,唯一的一個屬性QueryString是擷取查詢字串值的集合。在返回的集合類型中根據Key獲得Value的值

 

記住:參數傳遞的格式多個參數傳遞需要用&符號隔開;活動頁面接受參數時重寫的 OnNavigatedTo方法;this.NavigationContext.QueryString接受所有傳遞到此頁面的參數及其值,返回一個字典容器

相關文章

聯繫我們

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