我正在構建WPF應用程序並計劃使用PRISM模式庫。幾乎我所有的觀點都會顯示或修改列表。我應該在哪裏放置這個對象,我應該如何將它提供給我的觀點。我應該只有一個模塊,在該對象的列表中創建對象,然後在創建視圖時將對象提供給視圖,然後將它們注入到各個區域中?還是有更好的方法來做到這一點?PRISM應用程序的總體應用架構
回答
- 你只需要一個模塊。模塊的想法是分離應用程序的不同部分,例如訂單管理和客戶管理。
- 遵循MVVM術語,列表是您的模型。只需將其命名爲ListModel。這個ListModel應該被一個視圖模型包裝。這可以命名爲ListViewModel
- 所有視圖都有一個視圖對應的視圖模型。這些視圖模型都有對ListViewModel的引用。 ListViewModel通過屬性提供給視圖,以便視圖可以使用綁定路徑DataContext.ListViewModel引用ListViewModel。當你的視圖都與你的視圖模型綁定時,當你的模型填充數據時是無關緊要的。
棱鏡是你正在嘗試做一個非常有用的模式庫。 我建議你在這裏看看http://compositewpf.codeplex.com/你可以找到很多關於Prism和MVVM架構的答案。你可以定義你想要的模塊,但是如果視圖與顯示和修改列表類似,最好的方法是確定從一個視圖到另一個視圖的變化。像綁定或屬性或標籤名稱,並從模板T4生成這些不同的視圖(或者即使你想逐一重新整理它們)它將是一個相同的模塊,但具有不同的綁定例如。
如果你想分享多的ViewModels之間的信息(無論在哪個區域/模塊他們),你可以實現一個共享服務,將單一列表集合並在每個視圖模型注入該服務。然後,讓每個視圖模型通過服務訪問集合中的數據,因此當對集合執行CRUD操作時,所有更改都將反映在所有視圖模型中,然後您可以提供所有視圖。
如果你要使用共享服務,並將其導出爲一個非共享的出口,你ObjectRepository的同一實例將所有的ViewModels之間共享。在更新服務中的List屬性時,可以使所有視圖模型都使用它。 如果您將使用unity,請使用單例實例。
有關共享服務的更多詳細信息http://msdn.microsoft.com/en-us/library/ff921122%28v=PandP.40%29.aspx#sec7
您在佈置基本的PRISM應用程序方面做得很好。但是我看不到你將一個'Master'列表傳遞給這個模塊的位置,並且你沒有在你的模塊中定義一個列表。不過你的建議可以查看http://compositewpf.codeplex.com/。 – PlTaylor
- 1. 使用MVVM模式的Wpf Prism應用程序架構
- 2. Prism(Ent Lib v5)入門和構建應用程序框架
- 3. iPhone應用程序:總體應用程序層次和體系結構
- 4. Android應用程序架構
- 5. Web應用程序架構?
- 6. Silverlight應用程序架構
- 7. Web應用程序架構
- 8. Android應用程序架構?
- 9. 移動應用程序架構vs其他應用程序架構
- 10. VB.NET應用程序重構架構
- 11. PRISM模塊和MVVM的程序架構
- 12. Android的應用程序的Sqlite架構
- 13. 實體數據框架和Web應用程序體系結構
- 14. 完整的業務線應用程序 - PRISM MEF實體框架 - 示例?
- 15. 哪些框架(MVVM light,Prism,MEF,..)應該用於我的Financial Silverlight應用程序?
- 16. 沒有PRISM的複合應用程序
- 17. Prism應用程序的部署選項
- 18. 前端架構的web應用程序
- 19. 個人應用程序的URL架構
- 20. 架構更大的應用程序
- 21. MVC架構的RESTful應用程序
- 22. 瞭解MVC應用程序的架構
- 23. Silverlight應用程序的接口架構
- 24. Web應用程序架構的問題
- 25. 構建Web應用程序的框架
- 26. 使用WPF,MVVM和Prism構建應用程序
- 27. 如何構建實體框架應用程序(使用MEF)
- 28. 使用實體框架構建應用程序dbContext API問題
- 29. 應用程序體系結構簡化應用程序定製
- 30. Rails:應用程序框架的體系結構
我同意我主要有一個模型。但是我有大約十幾個視圖顯示/編輯關於該模型不同部分的信息。我看不到構建一個'Master'ViewModel,然後使用它來顯示不同視圖中的數據的不同信息/演示。 – PlTaylor
重點不在於構建一個主視圖模型,而是爲每個視圖構建一個視圖模型,這些模型全部使用包裝該模型的一個視圖模型。所以當你有5個視圖時,你有5個視圖模型。這5個視圖模型都使用包含該模型的相同的第六個視圖模型。 – PVitt