带有MVVM模式的Wpf Prism应用程序架构

时间:2009-09-10 09:25:02

标签: .net wpf architecture mvvm prism

我目前正在将Prism引入新的Wpf应用程序,并使用MVVM模式。我构建Wpf应用程序的最初方法是添加一个项目来保存模型类,一个用于保存视图模型类等。这些可能会在以后拆分,以避免在同一个项目中使用不同的逻辑组件。然而,当我使用Prism(和一般情况下)时,这对我来说是一个糟糕的结构。

在Prism中,您希望将事物构建到不同的逻辑模块中 - 与相同事物相关的任何内容都将放置在同一模块中。所以这告诉我,我应该将所有与我的应用程序的逻辑部分相关的部分放入该部分的模块中。这可能包含此组件,相关视图模型和必要模型类的一些不同视图。然而,使用这种方法,我会将模型分散在我的解决方案中。由于该模型将与数据库绑定,因此这对我来说可能是一种可能不好的方法。我正在使用NHibernate,因此数据库实际上不是那种“视觉”。

所以我看到了三种不同的结构。这些通常是否需要?或者我应该采用不同的方式构建我的应用程序?

  1. 项目“模型”,“ViewModel”,以及一个用于保存UserControls的项目。等等..
  2. 一个项目主要部分 - 包括该部分的相关视图,视图模型和模型。
  3. 一个项目主要部分 - 包括视图和视图模型,但模型在单独的项目中定义。如果他们有逻辑关系,甚至可能是所有模型类的一个项目。
  4. 非常感谢任何意见!

1 个答案:

答案 0 :(得分:2)

将您的模型放在一个单独的项目中就可以了。我会说它是推荐它,如果它足够大,真正受益于棱镜式架构。该模型不仅限于V和VM的垂直竖井,而是位于所有模型下方的较低层。

你的观点和视图模型有意义地生活在一起。您可能会发现视图或视图模型的重用,但如果不这样做,请不要强调。也就是说,视图并不总是永远与特定视图模型相关联,反之亦然。例如,我有一个视图模型,显示所有销售和一个过滤当前季度的视图模型,但我可以将两者都安装到同一视图。另一方面,我在同一视图模型上有一个饼图与条形图。所以拆分这些并不像切割和干燥。但是,您可能会发现比查看/查看模型对更大的块。销售与客户管理等。