簡體   English   中英

如何在頁面之間傳遞參數

[英]How to pass parameters between pages

我正在開發一個有兩個頁面的 UWP 應用程序,我想要在頁面之間傳遞參數的最佳實踐。 我也想不斷重復傳遞信息

以下場景的最佳方法是什么?

例如,更改頁面中的用戶控件。 我們有兩個頁面,每個頁面都打開並保持在屏幕中間,每個頁面上都有一個按鈕,當我們點擊它時,它會改變另一個頁面的背景顏色。

感謝您的幫助,

您可以提供導航參數作為Frame.Navigate方法的第二個參數:

Frame.Navigate(typeof(SecondPage),"something");

然后在第二頁的OnNavigatedTo覆蓋中獲取參數:

protected override void OnNavigatedTo(NavigationEventArgs e)
{
    var data = (string)e.Parameter; //"something"
    ...
}

建議為重復的答案沒有提到一個重要的事實 - 參數只能是啟用導航狀態序列化的基本類型。 正如文檔所說:

要使用 GetNavigationState 啟用框架狀態序列化,您必須僅使用導航參數的基本類型,例如字符串、字符、數字和 GUID 類型。 否則 GetNavigationState 將在應用掛起時拋出異常。 如果不使用 GetNavigationState,該參數可以具有其他類型。

即使您不需要支持暫停和幀狀態序列化,堅持使用簡單參數並可能將日期存儲在其他地方也是一個好主意。 再次來自文檔:

如果不使用 GetNavigationState,則參數值可以具有復雜類型。 但是,您仍應僅使用基本類型,以避免因框架的導航堆棧持有對參數的引用而導致內存使用過多 首選方法是不傳遞實際對象,而是傳遞可用於在目標登錄頁面中查找對象的標識符。 例如,不是傳遞 Customer 對象,而是傳遞對 CustomerID 的引用,然后在導航完成后查找 Customer。

如果我需要傳遞一個復雜的對象,我通常傾向於使用 JSON 序列化將它變成一個string ,然后在目標頁面中反序列化。 為此,您可以使用令人敬畏的Json.NET 庫

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM