windows phone7 學習筆記03——資料傳遞

來源:互聯網
上載者:User

    綜合很多資料,參數傳遞主要有四種方式:

    1、通過NavigationContext的QueryString方式;    2、通過程式的App類設定全域變數(此方法可以傳遞對象);    3、通過NavigationEventArgs事件類別的Content屬性設定;    4、通過PhoneApplicationService類的State屬性。      1、通過NavigationContext的QueryString方式     這種傳參數方式最簡單最易理解,類似於web中的?id=1類型。    首先在A頁面挑戰到B頁面的uri中加入參數,如“/View/Music.xaml?id=1”;    在B頁面就可以接收了,如        int id =  int.Parse(NavigationContext.QueryString["id"]);    注意:(1)一般在接收之前要判斷參數是否存在。         (2)同時傳遞多個參數可以使用“&”串連。         (3)地址別命中也可以使用這種方法,使用“{}”來表示變數。如              <nav:UriMapping
Uri="Music/{id}"
MappedUri="/View/Music.xaml?id={id}"></nav:UriMapping>
這樣設定後“Music/1”就相當於"/View/Music.xaml?id=1"。


      2、通過程式的App類設定全域變數(此方法可以傳遞對象);    由於App 類繼承自Application類,而通過Application的Current屬性可以擷取到與當前程式關聯的Application類執行個體,然後通過轉換就可以得到App類執行個體,因此,通過在App類中設定全域變數,在程式的其他任何頁面都可以訪問。    (1)在App.xaml的App類中設定全域變數:        public partial class App : Application            {                 Public int ID { get; set; }            }    (2)在page1中設定:        App app = Application.Current as App;        app.ID = 1;    (3)在page2中接收:        App app = Application.Current as App;        int id = app.ID;     補充:這種方法也可以通過App類的靜態屬性來傳遞對象:    (1)首先我們建立一個MusicClass類:           public class MusicClass              {                   public string Name { set; get; }                   public string File { set; get; }              }    (2)在App類中添加靜態屬性:           public static MusicClass Music { get; set; }    (3)page1中設定參數:           App.Music = new MusicClass             {                File = "song1.mp3",                Name = "歌曲1"             };    (4)page2中接收參數:           App.Music = new MusicClass           string musicFile = App.Music.File;           string musicName = App.Music.Name;      3、通過NavigationEventArgs事件類別的Content屬性設定;    在導航至其他頁面函數OnNavigatedFrom中,測試導航的目標頁面是否為自己真正要轉向傳遞參數的頁面,如果是,可以通過NavigationEventArgs事件類別的向目標頁面注入一些"傳遞內容"。           protected override void OnNavigatedFrom(System.Windows.Navigation.NavigationEventArgs e)

       {
           var targetPage = e.Content as Page2;
           if (targetPage!=null)
           {
               targetPage.ID= 1;
           }
       }

    然後page2取出參數值:         public int ID { get; set; }


     protected override void OnNavigatedTo(System.Windows.Navigation.NavigationEventArgs e)
     {
         if (ID!= null)
         {
             int id = ID.ToString();
         }

     } 

      4、通過PhoneApplicationService類的State屬性。    由於PhoneApplicationService類的State是一個IDictionary類型,因此,可以儲存任何對象,不過這個對象必須是可序列化(serializable)的。       註:PhoneApplicationService類,需要訪問命名空間using Microsoft.Phone.Shell;       在程式中,可以不需要自己建立PhoneApplicationService的執行個體,通過PhoneApplicationService的靜態屬性Current就可以擷取到已有的PhoneApplicationService執行個體。
        page1中設定參數:              protected override void OnNavigatedFrom(System.Windows.Navigation.NavigationEventArgs e)         {             phoneAppService.State["id"] = int.Parse(myTextBox.Text);//擷取Page1頁面的值,進行傳遞;               base.OnNavigatedFrom(e);          }
     page2中取出參數:               protected override void OnNavigatedTo(System.Windows.Navigation.NavigationEventArgse)          {            if(PhoneApplicationService.Current.State.ContainsKey("id")              {                     myTextBlock.Text=PhoneApplicationService.Current.State["id"] as string;                }              base.OnNavigatedTo(e);          }
       註:一般不用這種方法來傳遞參數,這種方法用的比較多的是記住頁面當前的狀態,跳回來後顯示剛才正在編輯的內容。
參考文章:http://blog.csdn.net/wangbole/article/details/7174663          http://www.cnblogs.com/elecpiano/archive/2011/11/14/2248378.html
相關文章

聯繫我們

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