PRISM应用程序的整体应用程序架构

时间:2011-08-17 13:57:16

标签: wpf mvvm prism-4

我正在构建一个WPF应用程序并计划使用PRISM模式库。我的几乎所有视图都会显示或修改列表。我应该在哪里放置此对象以及如何将其提供给我的视图。我应该只有一个模块,在该对象的List中创建对象,然后在创建视图之前将对象提供给视图,然后将它们注入各个区域?或者有更好的方法吗?

2 个答案:

答案 0 :(得分:1)

  1. 您只需要一个模块。模块的概念是分离应用程序的不同部分,例如,订单管理和客户管理。
  2. 遵循MVVM术语,列表是您的模型。只需将其命名为ListModel即可。这个ListModel应该用一个视图模型包装。这可以命名为ListViewModel
  3. 所有视图都有一个视图对应的视图模型。这些视图模型都具有对ListViewModel的引用。 ListViewModel通过属性提供给视图,因此视图可以使用绑定路径DataContext.ListViewModel引用ListViewModel。当您的视图全部绑定到视图模型时,模型填充数据时无关紧要。

答案 1 :(得分:1)

Prism是一个非常有用的模式库,可用于您要做的事情。 我建议你看看http://compositewpf.codeplex.com/你可以找到很多关于Prism和MVVM架构的答案。您可以定义所需的模块,但如果视图类似于显示和修改列表,则最好的方法是确定从一个视图到另一个视图的更改内容。像绑定或属性或标签名称,以及从模板T4生成那些不同的视图(或者即使你想要一个一个地重新组装它们)它将是一个相同的模块,但具有不同的绑定,例如。

如果要在多个视图模型之间共享信息(无论它们在哪个区域/模块中),您可以实现存储单个List集合的共享服务,并在每个视图模型中注入该服务。然后,让每个viewmodel通过服务访问集合中的数据,因此当对集合执行CRUD操作时,更改将反映在所有视图模型中,然后您可以提供所有视图。

如果要使用该共享服务并将其导出为非共享导出,则将在所有视图模型之间共享同一个ObjectRepository实例。更新服务中的List属性时,可以使所有视图模型都使用它。 如果您将使用unity,请使用单例实例。

有关共享服务的更多详细信息http://msdn.microsoft.com/en-us/library/ff921122%28v=PandP.40%29.aspx#sec7