2011-08-17 57 views
1

我正在構建WPF應用程序並計劃使用PRISM模式庫。幾乎我所有的觀點都會顯示或修改列表。我應該在哪裏放置這個對象,我應該如何將它提供給我的觀點。我應該只有一個模塊,在該對象的列表中創建對象,然後在創建視圖時將對象提供給視圖,然後將它們注入到各個區域中?還是有更好的方法來做到這一點?PRISM應用程序的總體應用架構

回答

1
  1. 你只需要一個模塊。模塊的想法是分離應用程序的不同部分,例如訂單管理和客戶管理。
  2. 遵循MVVM術語,列表是您的模型。只需將其命名爲ListModel。這個ListModel應該被一個視圖模型包裝。這可以命名爲ListViewModel
  3. 所有視圖都有一個視圖對應的視圖模型。這些視圖模型都有對ListViewModel的引用。 ListViewModel通過屬性提供給視圖,以便視圖可以使用綁定路徑DataContext.ListViewModel引用ListViewModel。當你的視圖都與你的視圖模型綁定時,當你的模型填充數據時是無關緊要的。
+0

我同意我主要有一個模型。但是我有大約十幾個視圖顯示/編輯關於該模型不同部分的信息。我看不到構建一個'Master'ViewModel,然後使用它來顯示不同視圖中的數據的不同信息/演示。 – PlTaylor

+0

重點不在於構建一個主視圖模型,而是爲每個視圖構建一個視圖模型,這些模型全部使用包裝該模型的一個視圖模型。所以當你有5個視圖時,你有5個視圖模型。這5個視圖模型都使用包含該模型的相同的第六個視圖模型。 – PVitt

1

棱鏡是你正在嘗試做一個非常有用的模式庫。 我建議你在這裏看看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

+0

您在佈置基本的PRISM應用程序方面做得很好。但是我看不到你將一個'Master'列表傳遞給這個模塊的位置,並且你沒有在你的模塊中定義一個列表。不過你的建議可以查看http://compositewpf.codeplex.com/。 – PlTaylor