Windows Phone 7 Tip – 不同頁面之間的參數傳遞

來源:互聯網
上載者:User

有朋友問起Windows Phone 7頁面導航(Page Navigation)時,如何在不同頁面之間進行傳遞參數。我們在此整理一下。

Windows Phone 7的頁面間傳參有三種方式。為了方便描述,我們將情境設定為:從A頁面導航到B頁面。

 

第一種方法:QueryString

這種傳參方式繼承自傳統的網頁開發模式。在A介面中,調用 NavigationService.Navigate() 方法時,所傳遞的Uri不僅僅是B頁面的xaml檔案地址,還包括字串格式的參數。具體格式如下:

 

"/PageB.xaml?param1=stringValue1&param2=stringValue2"

 

xaml檔案地址後跟一個問號,代表參數聲明的開始。多個參數用 & 符號間隔。

而在B頁面中,需要重載基類的 OnNavigatedTo 方法,並從中獲得所傳遞的參數值,範例程式碼如下:

string paramValue1 = NavigationContext.QueryString["param1"];

string paramValue2 = NavigationContext.QueryString["param2"];  

該傳參方式簡單易用,唯一的不足之處是僅支援字串類型。 

 

第二種方法:全域參數

在 App.xaml.cs 檔案中的 App 類中,定義任意類型的 public 屬性(例如param3)。 

在A頁面中,設定該屬性變數值,代碼如下:

 

(App.Current as App).param3 = someValue;

在B頁面中,訪問該變數,代碼如下:

someVariable = (App.Current as App).param3;

這種傳參方式非常靈活,支援全域訪問。 

 

第三種方法:NavigationEventArgs.Content 

其實即將離開A頁面時,可以得到前往頁面的執行個體(頁面導航時,首先建立B頁面的執行個體,再把當前顯示內容從A頁面替換為B頁面)。因此,我們可以探知導航的目標頁面是否是B頁面,如果是,就向B頁面“注入”一些內容。

A頁面代碼如下:

protected override void OnNavigatedFrom(System.Windows.Navigation.NavigationEventArgs e)
{
    var targetPage = e.Content as PageB;
    if (targetPage!=null)
    {
        targetPage.param4 = someValue;
    }
}

 

B頁面代碼如下:

public ParamType param4 { get; set; }

protected override void OnNavigatedTo(System.Windows.Navigation.NavigationEventArgs e)
{
    if (param4 != null)
    {
        textBlock3.Text = param4.Name;
    }

該方法同樣支援各種參數類型。

 

以上各種參數傳遞的方式,孰優孰劣,就見仁見智了。 

也許還會有人補充說,某些framework(例如prism、MVVMLightToolkit等) 還支援更多中傳參方式(如messaging),但個人感覺那些東東簡直”飛機拉馬車“,不太適合小規模的手機應用開發。

 

OK,希望對各位有所協助!代碼送上:

下載代碼 

相關文章

聯繫我們

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