c# - 什么进入模型/ View 模型?

标签 c# wpf mvvm

哪里去了?

这是我的C#项目的简短描述:

我有一个机械结构(整个程序中只有一个),由大约20到30个参数(尺寸, Material 参数等)描述,它们可能是一个完整的集合,它来自输入屏幕或XML文件(反序列化) )。然后,必须在计算中处理这些参数以生成输出,该输出既要传给JPEG文件又要传给HTML文件。

View 很清晰:这是IO屏幕。

View 需要属性所在的ViewModel。可能是:

我的模型是手头的构造,由其参数描述。
但是,这些参数与从IO屏幕, View 或XML收集的参数相同。

一些输出(JPEG文件)也进入 View 。它可能是一个通知它已更改的属性。

现在我的问题是,我是否需要一个Model,因为ViewModel已经具有所有属性。

或者,我根本不需要ViewModel,因为我的模型具有要查看的所有属性。我可以在ViewModel中定义一个模型(就像它总是在MVVM中完成),然后将该模型用作View的DataContext。但是,最后一个选择会使View意识到模型:不是MVVM精神。

最佳答案

我已经写过多次了,但是我会再做一次。

MVVM背后的主要原因是将各层分开,并尽可能避免紧密耦合。

就是说,View是您正确猜到的UI。用户看到的内容。不管是Windows,Page,自定义控件,网页还是控制台(在更广泛的上下文中谈论MVVM)都无关紧要。
ViewModel是模型和 View 之间的中介。出于View的目的,它从模型中获取,组合和操纵您的方法和属性。不在乎如何,何时何地使用它们。它还可以触发模型方面的操作,例如负责更新数据库的调用服务。
Model是与特定平台无关的一切。它是您的业务逻辑类,它是数据库实体等。基本上,这是您的应用程序与UI实现之间没有任何联系。这就是人们的错误,认为模型只是数据库实体。那就错了!

要回答您所问的问题:“现在我的问题是,因为ViewModel已经具有所有属性,所以我根本不需要Model。”

是的,您应该这样做,否则最终将 View 直接耦合到模型,这违反了MVVM原理。您的 View 不应该直接了解模型。就View而言,每种属性和方法都可以来自不同的项目。它不会改变任何事情,并且 View 仍将起作用。

您可能还没有看到它,但是将来它将使您的生活更加轻松。如果正确执行,代码将变得易于维护,可读性强等。

关于c# - 什么进入模型/ View 模型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28941140/

相关文章:

c# - LINQ 程序集位于 Windows XP 中的什么位置?

wpf - x :Key and x:Name in WPF? 和有什么区别

c# - 在关闭时使WPF应用程序保持事件状态

.net - 如何在 WPF 中使用全局资源?

c# - 在 WPF DataGrid 中删除一行

android - 应该在哪里创建 fragment ?在viewModel或Activity中?

c# - 将括号添加到文本框值

c# - 这款游戏的理想选择,XNA 还是 SlimDX (DirectX 10)?

c# - Xamarin Forms - 将光标更改为等待光标

c# - 委托(delegate)分配是否在 C# 中创建新副本?