2013年4月16日 星期二

[Silverlight、WPF] 頁面之間傳值(Passing Parameter)

最近剛好被問到如何在WPF的Page Navigation間傳遞資料,原本以為跟Silverlight應該是差不多方式,結果發現兩者並不一樣,所以也順便紀錄一下頁面傳遞的幾種方式。


在Silverlight中可以透過QueryString方式來傳遞字串,如下面範例是導覽到Page1.xaml然後後面帶QueryString
image

然後在導覽到的Page1頁面中先判斷有沒有這個QueryString,有的話再去讀取出來:


而在WPF中並沒有類似QueryString的方式,不過WPF的Navigate()方法擁有更多種的多載,所以可以利用第一種object參數的導覽方式,做法如下:
image

在Frame要導覽到Page1.xaml就直接new一個Page1,然後裡面是要傳遞的值
image

而在Page1的建構函式原本是沒有接收參數,所以也必須要修改一下

另一種方法


另外在WPF中也可以利用類似全域變數的方式來儲存欲傳遞的值,一樣也可以達成頁面之間傳值,存取的語法如下:
image

當然Silverlight也可以利用定義在App.xaml.cs中的全域變數來達成,首先在App.xaml.cs中宣告變數
image

然後就可以在頁面中進行存取了,語法如下:
image

0 意見:

張貼留言