gpt4 book ai didi

wpf - 将 ViewModel 放在代码隐藏中是错误的吗?

转载 作者:行者123 更新时间:2023-12-04 23:22:20 25 4
gpt4 key购买 nike

在 MVVM 中,我们通常有一个 View(XAML + 通常是空的代码隐藏)以及一个作为单独类的 ViewModel。 View 和 ViewModel 之间的交互通过数据绑定(bind)发生。

假设 View 只是 XAML 并且它的代码隐藏是空的(通常是这种情况),使用代码隐藏本身作为 ViewModel 并将 View 绑定(bind)到代码隐藏的属性有什么问题吗?关注点的分离仍然存在 - 您有一个纯 XAML View 和一个作为代码隐藏的 ViewModel,它们仅通过数据绑定(bind)相互通信。 ViewModel 仍然可以进行单元测试。

这听起来像是异端邪说,但我想不出任何用例可以证明当代码隐藏实际上为空时必须为 ViewModel 创建单独的类是合理的。

最佳答案

代码隐藏的定义是与 View 关联的代码。在 XAML 中,这通常通过 x:Class 来完成。 XAML 根元素上的属性,从根元素的基类型继承(这总是在自动生成的部分类文件中指定),等等。居然有a little section in the documentation概述了 WPF XAML 中代码隐藏的概念。由于x:Class属性只允许您指定一个类,这基本上将您的 XAML 标记绑定(bind)到一个类。该类表示其代码隐藏。

由于代码隐藏本质上是 View 逻辑或 XAML 标记的基础代码,因此您不能将代码隐藏类作为 View 模型。 View 模型是完全与 View 无关的,除了它们通过数据绑定(bind)向其关联 View 提供数据并从其接收数据这一事实;另一方面,代码隐藏或 UI 逻辑主要关注提供行为以查看由 XAML 表示的对象,而不是应用程序逻辑。

就像其他人所说的那样,如果您能以某种方式使其工作,那么就编译器而言,它不是“错误的”,但我会说这有点违背代码隐藏的本质。

关于wpf - 将 ViewModel 放在代码隐藏中是错误的吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20515933/

25 4 0