如果 View
的代码隐藏仅包含带有 InitializeComponent()
调用的构造函数,那么为什么不只使用 DataContext= “{BindingrelativeSource={RelativeSourceSelf}}”
并使用 View 本身作为 View 模型?
我知道这技术上违反了单一职责原则,但由于 XAML 和代码隐藏是彼此独立定义的,因此它不会导致通常的困惑。对所有内容使用单独的 View 模型会导致文件结构更加困惑。
最佳答案
ViewModel 描述 View 状态。出于测试和重用目的,它必须独立于 UI。 好处:
- 你可以通过单元测试覆盖ViewModel,而不必引用UI 测试中的类
- 您可以在其他 UI 目标上重复使用您的 ViewModel: 控制台应用程序、WinForms 应用程序、UWP 应用程序、Xamarin iOS/Android 应用程序、否 展示物联网项目。您只需为新的目标平台编写 View 。
- 有时,即使在 WPF 和 MVVM 中,您也必须编写一些代码用于仅查看目的,因为它可能比为此创建一些新实体更简单、可读和可靠。如果你在代码后面也有 ViewModel,你会变得一团糟。
关于c# - MVVM:单独的 ViewModel 的目的是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44621729/