c# - MVVM:单独的 ViewModel 的目的是什么?

标签 c# wpf mvvm viewmodel

如果 View 的代码隐藏仅包含带有 InitializeComponent() 调用的构造函数,那么为什么不只使用 DataContext= “{BindingrelativeSource={RelativeSourceSelf}}”并使用 View 本身作为 View 模型?

我知道这技术上违反了单一职责原则,但由于 XAML 和代码隐藏是彼此独立定义的,因此它不会导致通常的困惑。对所有内容使用单独的 View 模型会导致文件结构更加困惑。

最佳答案

ViewModel 描述 View 状态。出于测试和重用目的,它必须独立于 UI。 好处:

  1. 你可以通过单元测试覆盖ViewModel,而不必引用UI 测试中的类
  2. 您可以在其他 UI 目标上重复使用您的 ViewModel: 控制台应用程序、WinForms 应用程序、UWP 应用程序、Xamarin iOS/Android 应用程序、否 展示物联网项目。您只需为新的目标平台编写 View 。
  3. 有时,即使在 WPF 和 MVVM 中,您也必须编写一些代码用于仅查看目的,因为它可能比为此创建一些新实体更简单、可读和可靠。如果你在代码后面也有 ViewModel,你会变得一团糟。

关于c# - MVVM:单独的 ViewModel 的目的是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44621729/

相关文章:

c# - 从 .NET Windows 服务启动进程

c# - Format Line 实际上没有格式化。

c# - 从列表中初始化嵌套对象

wpf - 绑定(bind)到字符串列表时的列表框项目的工具提示

c# - 在 TreeView 周围移动节点

c# - 将 Model 绑定(bind)到 ViewModel 的方法

c# - 使用 Configure 方法时如何在代码中设置 WCF 基地址

c# - 如何从 ViewModel 访问 ObservableCollection 中的数据?

C# Collection<T>.Remove(T item) 尽管对象数据相等但不起作用

wpf - MVVM WPF 组合框 : creating a template for comboboxitem