2015-07-20 17 views
1

我很困惑在MVVM Light中使用什麼View模型定位器。我知道它允許將特定視圖的數據上下文綁定到定位器類中的靜態視圖模型實例。視圖模型定位器的用途是什麼?

但是,爲什麼我們需要一個單獨的定位器類與所有視圖模型實例?有什麼優點呢?除了實例化視圖模型和數據上下文之外,還使用了哪些定位器? 例如,您可以在後面的代碼中實例化視圖模型,並將其設置爲視圖的數據上下文。

+0

依賴注入也由定位器管理 –

回答

0

我使用視圖模型定位器,因爲我喜歡將我的視圖編寫爲「視圖優先」,而不是「許多人喜歡做的視圖模型」。我認爲「先看」更有意義。不僅如此,它還允許您的虛擬機通過DI自動更新,前提是您已將所有設置正確。這樣您就不必手動創建它們並設置DataContexts等。

0

使用ViewModelLocator有幾個原因。使用設計時

設計時數據

具有視圖模型在XAML有線起來(而不是代碼隱藏)意味着你有一個活躍的視圖模型。如果你在代碼隱藏中連接它,你不會得到。這意味着你沒有看到視圖模型的任何屬性而設計的頁面,不要自動完成的XAML綁定等

依賴注入

隨着ViewModelLocator您可以輕鬆地利用依賴注入的力量。您不需要手動構建ViewModel,它們會自動創建並具有適當的依賴關係(服務)。

接線服務了不同的實現設計或測試

相關的上述項目,使用ViewModelLocator讓您輕鬆爲不同的目的使用不同的服務。例如,您可能不希望將「真實」Web服務用於設計時間數據。你也可以在代碼隱藏方面做到這一點,但是你必須一遍又一遍地完成。

但最重要的

MVVMLight是一個模塊化的框架工作。你可以使用你喜歡的部分,並忽略你不喜歡的部分。因此,如果你更喜歡在代碼隱藏方面連接ViewModel(也許你不喜歡DI,而且你不關心設計時數據),那麼這樣做並沒有什麼阻礙。