我在Windows Phone 7.5及更高版本的項目(6頁)上工作。我不做純MVVM模型,因爲處理導航事件和查詢字符串是一件很痛苦的事情,所以我決定逐個學習,並且首先完成項目:P何處將ViewModel綁定到視圖?
因爲我是MVVM的新手,我決定不使用MVVM Light,自己寫所有的樣板代碼。 當我完成每個部分的編碼時,我遇到了一個問題。
在哪裏綁定視圖模型是最有效的。我讀了很多,並總結了以下幾點。
在App.xaml.cs作爲屬性創建模型的實例,並在視圖中的代碼隱藏的約束力。(這是官方數據如何結合APP例子一樣。)但是,面對一個時很多觀點(6頁等),這可能是一個問題。
public partial class App : Application { private static MainViewModel viewModel = null; /// <summary> /// A static ViewModel used by the views to bind against. /// </summary> /// <returns>The MainViewModel object.</returns> public static MainViewModel ViewModel { get { // Delay creation of the view model until necessary if (viewModel == null) viewModel = new MainViewModel(); return viewModel; } } }
使視圖模型的新實例可以在視圖中後面的代碼的全局變量。所以我可以在視圖中使用它。 (如上所述,我不做純MVVM)
在後面的代碼中,在構造函數中,執行綁定一次。
public MainPage() { InitializeComponent(); myViewModel vm = new myViewModel(); DataContext = vm; }
我讀MVVM光它們使用ViewModelLocator作爲中心站。但是避免使用mvvm light,在哪裏綁定視圖模型,你認爲是最好的嗎?
您也可以在App.xaml或SomePage.xaml中將其定義爲資源,然後將DataContext綁定到該資源,以便您甚至不需要任何代碼。現在你有5個選項。 :)將其保留在App.xaml.cs中的好處之一是,您可以在不同視圖之間共享相同的VM實例 - 如果這是您所需要的。 – 2013-05-14 13:52:04
感謝@igrali現在我知道什麼時候將視圖模型放在App部分:) – 2013-05-14 14:47:30