MVVM设计问题

时间:2011-01-12 09:22:13

标签: c# silverlight

我正在尝试使用MVVM设计模式创建一个silverlight应用程序。这是一种银行申请。

我在MVVM上看了很多教程,但有些东西让我很困惑。

我有关于fiwe usercontrols表示我的视图“TransactionsView”,“AccountView”等以及一堆模型“UserProfile” - 包含用户密码,用户名和UserAccounts列表,“UserAccounts” - 包含名称,余额和列表AccountTransactions,“AccountTransactions” - 包含名称和ammount。

我应该创建一个包含我的userprofile的模型视图,还是应该为每个视图创建一个viewmodel?到目前为止我做得对吗?或者我有错误吗?

由于

5 个答案:

答案 0 :(得分:2)

在MVVM中,ViewModel通常与视图一对一。但是,ViewModel和Models之间没有奇偶校验。

  • 查看:用户界面
  • ViewModel:处理对视图状态的更改,并在适当时将其转发到模型。将来自底层程序的通知发送回用户。它也可以进行初始UI验证。
  • 型号:应用程序的实际“内脏”。算法,数据存储,系统调用等都在这里。我把程序流程放在这里。我见过其他人把它放在ViewModel中。那部分由你决定。

一个视图总是需要一个ViewModel,因此一对一(它可能有子模型,但我会把它留给你来决定/处理。我从1开始到... 1)。

ViewModel通常需要模型来实际“工作”,但是您尝试解决的每个应用/问题有多少个类/实例。

答案 1 :(得分:0)

根据你的解释,你正朝着正确的方向前进。您创建的视图模型对您有点了解,MVVM并不是一成不变的 - 它只是一种方法。我通过试验和ERROR发现的是,在深入挖掘自己之前理解它是明智的。

我阅读了很多文章,这些文章没有以我能理解的方式解释MVVM。最后,我发现Jeremiah Morrill的几篇文章直截了当且容易理解:Article 1article 2

答案 2 :(得分:0)

建议MVVM使用每个视图一个ViewModel。

答案 3 :(得分:0)

没有真正的硬性规则,但基本上每个视图通常有一个ViewModel。您可能会遇到想要在多个视图中共享视图模型的情况,但这种情况很少见。

答案 4 :(得分:0)

想象一下您希望在屏幕上看到的内容以及屏幕上的屏幕/控件可能处于的每个状态,该特定屏幕(视图)上所需的所有内容都应在ViewModel中具有相应的属性,您可以将其绑定到查看到。因此,这会转换为特定View的单个ViewModel。 ViewModel本身可以绑定到后面的一个或多个模型中。至少我就是这样理解的。