一个模型应该如何表明变化?通过活动?通过mediator / eventaggregator?通过INPC?

时间:2014-09-19 08:58:33

标签: mvvm dependency-injection inotifypropertychanged mediator eventaggregator

假设在View中按下按钮,ViewModel会对模型进行异步,冗长而艰难的计算(模型是业务逻辑和数据,根据维基百科)。在这个计算过程中,模型将一个计算结果吐出另一个(它们是不同类型的,它不像ObservableCollection在这里有用),并且View应该在这些部分结果准备就绪时显示它们。

它怎么能这样做?

  1. 通过 EventAggregator ? Caliburn Micro有一个,但这意味着我必须在我的业务逻辑中引用Caliburn Micro - 这可能不对,是吗?

  2. 通过 INPC ?我的印象是,无论我在哪里实现INPC,该类都将被暴露于被绑定。我显然不希望将具有业务逻辑的类暴露给View,因此我可以绑定到它的某些属性。所以我需要一个单独的类(实现INPC)的间接,我的属性是我从View可以绑定的业务逻辑设置的。现在我所做的就像创建一个模型所依赖的ViewModel。 - 这也不对! (不暴露它,但是使用订阅PropertyChanged的ViewModel包装它感觉就像严重违反了DRY)

  3. 所以我想我需要使用普通的事件?读过关于DI的Mark Seemans书和博客,我觉得这也是错误的。由于订阅构造函数中的事件是wrongHis suggestion是颠倒逻辑并让DI容器向业务模型类注入IObserver<>,它将在其上调用Next()。这意味着ViewModel可能会实现相当多的IObserver<>接口?是吗?

  4. 我需要一些指导,谢谢!

0 个答案:

没有答案