当我围绕mvvm事物时,视图是视图,视图模型是“视图的模态”,模型是我们正在处理的实体(或者至少这是我的理解)。但我不清楚模型实体的填充时间和时间。例如:
假设我有应用程序需要在数据库中创建新记录。并且该记录应该具有默认值。谁负责新记录,并获取默认值。这与MVVM有什么关系还是数据访问层的一部分?谁调用了viewmodel?
或者当\检索到的记录在哪里时的现有记录?如果被改变就保存?
谢谢
答案 0 :(得分:4)
在一个过于简化的答案中,您的ViewModel应该包含LOGIC,用于控制View显示的内容,以及如何允许它与模型或数据进行交互。
获取数据,保存和删除等事件通过命令机制拦截并推送到ViewModel中,在那里可以对它们进行测试。处理'Dirty'事件也是ViewModel的职责。至于谁调用ViewModel,你将委托调用WPF和Silverlight中可用的绑定机制。
在ViewModel中,它仍然是保持最佳实践,并确保您有一个DataAccess层抽象数据源,并可能使用存储库模式来抽象它。
ViewModel的生命周期可以简单如下......
但是,由于您可能在VM的Ctor中有很多移动部件,包括数据存储库接口,您可能希望使用IoC。这将使ViewModel的生命周期更接近......
这可能看起来更多步骤,但是对于IoC容器,您实际上只是调用IoC.Get()这样的单个方法,其余步骤根据应用的约定自动连接。
答案 1 :(得分:0)
我使用视图模型来控制加载(使用默认值)并保存模型,以及创建用于绑定到视图的集合和对象。这包括在我的模型上设置默认值。
答案 2 :(得分:0)
您的视图的State和Bahavior在您的viewmodel中定义,这意味着所有事件都在此处声明。
谁调用了viewmodel? 这取决于谁需要它。你可以在你看来调用它。
对于现有记录何时检索到哪些记录?并且如果改变了就保存 保存和检索零件位于您的viewmodel中。
有关详细说明,请访问此site。