2012-11-06 19 views
0

我目前工作的一個應用程序時遇到一些「建築混亂」。的Windows 8 Store應用全球視圖模型

我實現我自己的(很簡單)MVVM模式,在理想情況下只會有一個實例,將被更新大約每隔60秒。當我在前一個應用程序中對Windows Phone 7中的Xaml(Silverlight)進行操作時,我可以將ViewModel放入我的App類(應用程序開始的地方),然後我可以在整個應用程序中訪問這一個模型在初始加載過程完成後。

我一直在尋找的interwebs和下載教程/樣品,看是否可以在任何地方提供對Windows 8商店應用一個明確的答案。

而現在我想知道如果這是在Windows 8商店應用工作的正確方法是什麼?

這裏有一對夫婦的工作,我已經探索方式:

  • 具有視圖模型在MainPage.cs文件,然後在每個導航方法我一直在通過視圖模型作爲頁面參數爲下一頁使用。
  • 在App.cs文件中擁有ViewModel,試過但似乎無法從任何其他頁面訪問此文件
  • 有一個靜態ViewModel類,它包含應用程序的所有信息。沒有看到任何其他項目/樣品已經這樣做,所以我有點不情願從規範「脫離」,並做到這一點。

我敢肯定,這已經想過,有是Windows 8商店應用這樣的方法,但是我都有點吃力找到一個明確的答案,許多官方的(MSDN)的樣本/教程我遇到的問題並沒有真正解決這個問題。許多樣本似乎涵蓋了可用API的非常小的方面。

總結:我怎樣才能構建Windows 8商店應用程序,並有我所有的頁面可以結合/使用在整個應用程序一個視圖模型?這是否需要根據應用程序進行體系結構更改以及數據如何存儲或者我有沒有錯過可以使ViewModel全局化的方法?再次

謝謝:)

回答

3

一般來說大多數應用中使用不同的視圖模型的每一頁,這樣你就不會經常看到的共享視圖模型的實例。對每個視圖使用單獨的視圖模型(使用頁面特定的代碼)可能更好,但使用共享數據模型。

如果你真的想使您的視圖模型的所有頁面,你可以嘗試在您的視圖模型的靜態「實例」屬性(而非靜態類)之間共享。

例如,

public class MyViewModel 
{ 
    private static MyViewModel instance; 

    private MyViewModel() 
    { 
     // Private constructor 
    } 

    public static MyViewModel Instance 
    { 
     get 
     { 
      if (instance == null) 
       instance = new MyViewModel(); 

      return instance; 
     } 
    } 
} 
相關問題