2013-02-08 61 views
0

我正在基于MVVM模式的WPF应用程序。WPF MVVM - 如何安排ViewModels

对于一个特定的实体,我有一个包含实体属性的模型,一个实现INotifyPropertyChanged并具有一些额外逻辑以及公开Model和两个Views的属性的视图模型,一个用于创建,一个用于编辑实体。

我创建一个ViewModel进行编辑并创建视图,并在编辑时传递实体的ID以便可以检索现有数据。

我不能工作是如何组织的ViewModels在这种情况下,即:

  1. 我应该有一个EntityViewModel为其中EntityViewModel暴露模型的性能和EditEntityViewModel的属性EditEntityViewModel处理命令和其他逻辑?如果我这样做,那么我不认为EntityViewModel被通知在视图中的变化。
  2. 我应该有两个独立的ViewModel,彼此之间一无所知吗?
  3. 我应该有一个ViewModel的页面,它暴露了模型的属性以及处理命令和其他逻辑?
  4. 还有别的吗?

我知道我应该有一个ViewModel每个视图,但我不完全知道如何定义一个单独的视图。你可能会说我对于如何实现这个框架有点困惑。

非常感谢您的帮助。

回答

1

不要让它复杂化。尽量保持你的视图模型模型1:1的关系。因此,您的视图模型将公开方法来支持模型上的所有CRUD方法。另外,考虑使用一个视图,而不是两个。他们之间有很多重叠,所以我认为这是有道理的。你将有更少的类来编写和维护。我认为你的名单上的#3,使用一种观点的方法,是你最好的选择。

+0

感谢您的支持。它是有道理的,但如果我有另一个视图使用同一个实体的可观察集合来显示多个项目,该怎么办?直到现在我已经创建了一个可观察的集合(Of EntityViewModel)。如果我遵循你所说的并为这个模型建立了一个ViewModel,那么我会在它内部有与多个视图相关的逻辑。那有意义吗? – 2013-02-11 10:09:38

+0

我试图让我的视图模型精益求精,并且不要将太多逻辑放入它们中。也许你的逻辑属于共享数据访问类或类似的东西?我认为在不同的视图模型中重复您的可观察集合是可以接受的。 – 2013-02-11 14:25:11

+0

考虑了一些,并采纳了你在原始答案中所说的话,我想我现在对如何应用这一点有了更好的理解。谢谢你的帮助大爸爸。 – 2013-02-11 14:45:50