ViewModel类应该如何重用?

sti*_*k81 7 .net wpf mvvm reusability viewmodel

我正在研究WPF应用程序,我正在使用MVVM模式构建它.最初我有一个想法,ViewModels应该是可重用的,但现在我不再太确定了.

  • 如果我需要WinForms应用程序的类似功能,我是否应该能够重用我的ViewModel?
  • Silverlight不支持WPF所做的所有事情 - 我应该能够重用Silverlight应用程序吗?
  • 如果我想为我的应用程序制作Linux GUI,该怎么办?然后我需要ViewModel来构建Mono - 这是我应该努力的吗?
  • 等等..

所以; 是否应该考虑具有一个特定View的ViewModel类,或者考虑可重用性?

Dav*_*ton 13

要回答您的问题,请考虑单一责任原则:

"一个班级应该有一个,而且只有一个,有理由改变."

我会说,在合理范围内,您通常不希望将ViewModel重用于多个视图.我争论的主要原因是因为这会给你的ViewModel带来多个改变的理由.换句话说,如果一个或另一个视图发生变化,它需要改变,在我看来,这是改变的两个原因.它停在哪里?在这种情况下,我会保持简单,并将一个ViewModel绑定到View.

MVVM与WPF一起考虑的另一件事是数据模板.如果每个ViewModel迎合一个且只有一个视图,则更容易实现.