2011-04-10 89 views
2

我有一個兩頁Silverlight Windows Phone 7應用程序。我想在它們之間傳遞一些不平凡的狀態(一個數組或結構)。我是否必須遵循一個Web模型,其中需要將所有內容打包到查詢字符串中?當所有的頁面和類都在相同的設備上,在同一個進程和程序集中時,這是毫無意義的。在頁面之間傳遞狀態?

所以問題是:
- 在頁面之間導航時,是否有一種很好的方式來傳遞數據?
- 頁面導航時,源代碼頁的代碼隱藏是否可以訪問目標頁面的代碼隱藏(反之亦然)?
- 是否有任何共享用戶對象,所有頁面可以引用(如ASP會話)?

另外,有沒有一種方法來嵌套XAML的?我可以使用一個模型,在那裏有一個外部容器頁面,可以將不同的內容頁面加載到面板上。

回答

4

你有幾個選項的系列文章:

  1. 使用查詢字符串如你所說。從網絡發展的角度來看,這是有道理的,但我們並沒有從網絡發展的角度來看。
  2. 使用靜態變量。這可能是最簡單的。只需用靜態屬性聲明另一個類,並且可以用這種方式共享數據。這種方法唯一的擔憂是線程安全。
  3. 使用獨立存儲。
+1

我想我會選擇第二種選擇......但是這太不雅觀了。爲什麼我們必須在完全未分配的平臺上接受Web設計約束?毛。 – 2011-04-10 01:25:41

+0

如果您希望通過使用IoC容器並將其解析爲Singleton,可以掩蓋醜陋。這樣你就可以根據需要虛擬出一個依賴項。 – vcsjones 2011-04-10 01:29:47

2

不,您不必在查詢字符串中傳遞所有內容。只需傳遞一個id並將數據非平凡數據存儲在頁面之間的隔離存儲中。

有關於如何做到這一點here

+0

但這是持久的,不是嗎?我在想 - 在記憶中。 – 2011-04-10 01:23:43

+0

是的。有一個內存中的商店,我不記得它的名字,但是通過將它存儲在isostore中,您可以覆蓋自己的墓碑 - 當按下開始按鈕或進入電話時應用程序被移出內存 – 2011-04-10 01:26:16