实现MVVMC和依赖注入

Bor*_*ski 7 dependency-injection mvvm

刚才我看到这个文章关于MVVMC模式.现在我有一个问题.是应该将Controller注入ViewModel,还是将ViewModel注入Controller?

小智 8

MVVMC只是一个MVC,其中View被ViewModel对替换.

  • View仅与ViewModel交互,利用基于XAML的技术中强大的数据绑定机制.
  • ViewModel可以通知Controller但是不应该注入控制器.

我已经根据MSDN上Josh Smith的知名样本汇总了一个简单的样本......我在那里介绍了一个Controller.


Ala*_*lan 5

这取决于你在做什么.我猜想大多数时候Controller都不需要注入,但如果需要,它更有可能在ViewModel中需要.让我解释.

你在用控制器做什么?你必须做某事......如果那个"某事"只与"数据看起来像什么"有关,那么它就属于视图.如果它与"向用户显示的内容"相关,则它属于ViewModel.

我正在向我的一个ViewModel中注入一个控制器.我的ViewModel表示在View中绘制的数据.我有一个命令可以将数据项从当前图形移动到新图形.由于这会改变"图形窗口中显示的内容",因此我在ViewModel中实现了该命令.ViewModel从其自己的项集合中删除数据项,然后使用Controller请求为该新数据创建新视图(它已具有此功能).

看一下这篇文章,我看不到控制器和视图之间的箭头 从你链接的文章


Ste*_*hie 0

ViewModel 是 View 和 Controller 之间的契约,理想情况下也不需要了解(依赖)。

所以我绝对不会将控制器注入到视图模型中。

我不确定我是否会做相反的事情:控制器通常负责创建新的 ViewModel 实例。如果您想要更松散耦合的实现,您可以将抽象工厂注入到控制器中,以避免直接创建 ViewModel 类的新实例。