MVVM,其中put/handleui等事件'onClick'

MVVM, where to put/handle ui events such as 'onClick'

我知道这是一个模糊的问题,但多年来我一直专注于 MVP 设计,我决定让自己跟上时代并决定尝试 MVVM 架构设计,我一直在阅读很多关于 MVVM 遵循的 Stream/Observer 模式的博客、样本和资料,但我不清楚什么(找不到非常非常简单的代码) MVVM 如何处理 ui-事件?比如点击?在 MVP 中,view 和 presenter 有一个双向契约来处理这样的事情

// called by view
presenter.onViewButtonClicked 



void onViewButtonClicked() {

      // do something here that business logic requires
      view.doSomethingAfterPresenterReceivedClickEvent() 
}   

我知道 MVVM 中的视图 订阅 到 ViewModel,当数据(模型)View 发生某些事情时 对此做出反应

现在,我如何告诉 ViewModel 我点击了什么? ( PS : 我知道我必须订阅 ViewModel 才能在我点击某些东西时收听任何变化 ), 我只需要一些 guidelines 和例子我怎么能告诉 VM 我是故意做的。

我阅读了 Microsoft 的 MVVM 文档,它说了一些关于 iCommand 的内容,这是一种类似合同的东西,可以告诉 MVVM 发生了 UI 事件。

有谁能赐教吗...在此先感谢

编辑:我忘了说,我没有使用 DataBinding,并且由于公平的利弊,我决定不使用。

我确实不是 MVVM 专家,但据我所知:

MVPMVVM的主要区别在于MVP中有一个viewpresenter 之间的双向连接,这意味着 presenter 知道 view(界面)view 知道 presenter(界面)

另一方面,在 MVVM 中,这种连接只有一种方式,这意味着 view 知道 viewmodel,但是 viewmodel 不知道视图(因为从 viewmodelview 是通过观测数据处理的)。 这允许 viewmodel 独立于任何 viewview implementation 并允许单个 viewmodel 被多个 views.

使用

所以(最后)回答您最初的问题:'onClick' 事件的处理方式在 MVPMVVM[= 中基本相同55=] .. view 将事件通知 presenter / viewmodel 然后:

  • presenter 在模型中设置数据并在 view 上调用相应的方法(在 MVP 中)
  • viewmodel 设置更改的数据,自动触发对 view 的反应,因为观察到该数据(在 MVVM)

希望对您有所帮助:)