NavigationService.Navigate(new Uri("/PlayerLost.xaml", UriKind.Relative));
我不希望使用的查詢字符串。 我聽說過關於viewmodel ... 謝謝。
NavigationService.Navigate(new Uri("/PlayerLost.xaml", UriKind.Relative));
我不希望使用的查詢字符串。 我聽說過關於viewmodel ... 謝謝。
晚的答案,但我也試圖找到答案。希望這對你有用,但它在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
除了使用「導航」之外,您可以先手動創建頁面並設置ContentFrame的Content屬性。使用該方法可以將公共財產暴露給你的對象,並裝載到ContentFrame前設置:
Views.MyView vw = new Views.MyView();
vw.MyParameter = ... ;
this.ContentFrame1.Content = vw;
或者你也可以使用全局變量,但明智地使用它們:)
有傳遞一個對象,並記住,傳遞對象會導致問題沒有很好的辦法 - 如果該框架是瀏覽器的集成(默認情況下,瀏覽器中的後退/前進按鈕與您的Frame一起工作),那麼這意味着將在用戶瀏覽器中顯示的URL將以「/PlayerLost.xaml」結尾
然後,如果該URL是複製/粘貼(或最喜歡的等等),用戶返回頁面,你想要移動的對象將不會在那裏(因爲它是一個新的應用程序實例)。
所以你最好使用查詢字符串處理這種狀態,因爲這樣狀態就在URL中,應用程序可以在正常執行期間或通過深層鏈接獲取它。
如果您需要傳遞的數據對查詢字符串來說過於複雜,那麼請將該對象存儲在「global」某處(向您的Application類添加一個屬性是常用的方法,或者在某處創建一個靜態屬性)以及從結果頁面訪問它。該頁面應該對這些數據不存在(對於深度鏈接場景)具有彈性。
我做的很簡單:(vb例子) 在app.xaml中。VB文件,打開該文件,你會看到:
部分公共類應用 繼承應用
只需添加 部分公共類應用 繼承應用 公共共享wname作爲字符串
然後在您要使用該變量的頁面,只需調用app.wname
完成!
快樂編碼!
亞瑟
我覺得沒有辦法,除非你讓一個模型類洞的數據,你 – vodkhang 2010-12-06 16:05:54