2010-12-06 80 views

回答

2

晚的答案,但我也試圖找到答案。希望這對你有用,但它在VB中。希望它很容易破譯。我有一個名爲ITRSClass的類。在我MainPage.xaml.vb,我有:

Public Shared myClass As New ITRSClass 

,這也可能是例如任何對象或變量:

Public Shared myString as New String = "My New String" 

屆時,來自新的一頁,我打開(在我的情況被稱爲Setup.xaml.vb),我能到該對象或變量這樣的引用:

Dim mySharedClass = MainPage.myClass 

或:

Dim mySharedString = MainPage.myString 

在我的情況下,我有一個ObservableCollection類,用於根據我的(Setup.xaml.vb)頁面的結果更新MainPage上的ListBox。

這裏就是我學會了這 - 更好的解釋:Dave Corun's Blog

1

除了使用「導航」之外,您可以先手動創建頁面並設置ContentFrame的Content屬性。使用該方法可以將公共財產暴露給你的對象,並裝載到ContentFrame前設置:

Views.MyView vw = new Views.MyView(); 
vw.MyParameter = ... ; 
this.ContentFrame1.Content = vw; 

或者你也可以使用全局變量,但明智地使用它們:)

+0

不明白多少= X – Seva 2010-12-06 16:16:20

+0

並在.NET全局變量的存在呢? = u – Seva 2010-12-06 16:19:44

+0

實際上,您可以通過創建具有公共靜態屬性的公共靜態類在.NET中創建某種全局變量。 – danbord 2010-12-06 16:21:34

1

有傳遞一個對象,並記住,傳遞對象會導致問題沒有很好的辦法 - 如果該框架是瀏覽器的集成(默認情況下,瀏覽器中的後退/前進按鈕與您的Frame一起工作),那麼這意味着將在用戶瀏覽器中顯示的URL將以「/PlayerLost.xaml」結尾

然後,如果該URL是複製/粘貼(或最喜歡的等等),用戶返回頁面,你想要移動的對象將不會在那裏(因爲它是一個新的應用程序實例)。

所以你最好使用查詢字符串處理這種狀態,因爲這樣狀態就在URL中,應用程序可以在正常執行期間或通過深層鏈接獲取它。

如果您需要傳遞的數據對查詢字符串來說過於複雜,那麼請將該對象存儲在「global」某處(向您的Application類添加一個屬性是常用的方法,或者在某處創建一個靜態屬性)以及從結果頁面訪問它。該頁面應該對這些數據不存在(對於深度鏈接場景)具有彈性。

0

我做的很簡單:(vb例子) 在app.xaml中。VB文件,打開該文件,你會看到:

部分公共類應用 繼承應用

只需添加 部分公共類應用 繼承應用 公共共享wname作爲字符串

然後在您要使用該變量的頁面,只需調用app.wname

完成!

快樂編碼!

亞瑟