將我的view/viewmode/model拆分爲單獨的visual studio項目。 我使用MVVMLight工具包版本5.3.0,視覺工作室2015,C#和用於桌面僅拆分在不同的項目中查看viewmodel和模型 - 我在哪裏放置ViewModelLocator
溶液結構WPF應用程序
- 項目1:UI(WPF應用程序)
- 計劃2 :視圖(WPF用戶控件庫 - 存儲所有視圖)
- 項目3:ViewModel(類庫 - 用於存儲所有ViewModels)
- 項目4:模型(類庫 - 存儲所有型號)
- 項目5:通用(類庫 - 用我的模型和視圖模型 - 商店我的 - 類和唯一接口)
引用
- 常見:通過引用模型和ViewModel項目
- 模型:由ViewModel項目引用
- ViewModel:引用View項目
- 查看:我想我的UI應該只引用我查看項目
所以下面我MVVM察看知道視圖模型只是我的ViewModel知道我的模型。
所以現在我的問題:
1)在該項目中我把ViewModelLocator? (現在我把它放在我的View項目中) 2)我的UI項目應該只引用我的View項目嗎? 3)在MVVM light項目中,「DataContext =」{Binding Main,Source = {StaticResource Locator}}「位於View xaml文件和app.xaml中定義的Locator中。使用ViewModelLocator?
我檢查了幾個職位,想不通這些答案
更新:
這是我做了什麼得到它的工作:
第1步:改變引用:
- UI引用View和ViewModel項目
- 查看參考ViewModel項目
- 視圖模型的參考模型和通用
- 模型引用通用
第2步:移動ViewModelLocator到視圖模型項目(從View)
第3步:添加回DataContext的在我看來(用戶控件)作爲的DataContext = 「{結合UserDetailsVM,源= {StaticResource的定位符}}」
步驟4:添加到我的UI的項目的App.xaml中
步驟5:在我的UI項目的主窗口,我加在XAML我認爲作爲
注: - UI項目有MVVMLight 的引用 - 視圖和視圖模型項目具有參考MVVLightLibs和CommonServicesLocator
它的工作原理,但這是正確的做法嗎?
我很確定這個問題沒有明確的答案。如果分裂對你和其他開發者有意義,那就去做吧。如果你想看另一個例子,你可以做到這一點,我做了一個簡單的例子:https://github.com/famoser/techgemechtel/tree/master/mvvm-pattern/Techgemechtel.MVVMExample我在這裏解釋https: //blog.famoser.ch/mvvm-pattern-in-csharp/ –