正在mvvm中的ViewModel类中创建视图类的对象

本文关键字:视图 对象 创建 中的 ViewModel 正在 mvvm | 更新日期: 2023-09-27 18:21:05

我正在c#wpf中研究mvvm,我对mvvm有一点了解。我正在我的ViewMode类中创建我的View类的对象。那么它是否违反了mvvm模式?如何?如果有人详细解释一下就太好了。。

正在mvvm中的ViewModel类中创建视图类的对象

MVVM模式的全部目的是保持视图(向用户显示控件的显示器)与模型(数据、业务逻辑、数据访问)和ViewModel(模型和视图之间的粘合剂)的分离。虚拟机不应该担心UI(即视图)问题,因此在视图模型中创建和使用视图违反了MVVM模式。

视图几乎总是由UI元素组成,例如按钮或文本块。Viewmodel应该关注属性之类的东西,例如UserNameStartDateWarningState。然后,这些VM属性(使用DataBinding)绑定到视图中UI元素上的属性。。。因此视图对VM有依赖性,但对没有依赖性。VM从中获取数据以填充这些属性的地方首先是模型,或者对于数据输入,它们可能一开始都是空白的,并且应用程序依赖于用户在视图中输入数据。

例如,您可能希望将WarningState绑定到TextBox,但同样也可以将其绑定到ComboBox。或者,您可以使用转换器将其绑定到矩形的前景色,或者用于其他完全不同的东西的UI元素的背景色。

关键是,这些都是VM不需要担心的事情:它所关心的只是呈现数据/状态。这取决于它如何处理(或不处理)这些信息。通过这种方式,您可以用不同的版本完全替换视图,而不必更改VM中的任何。。。您已经成功地将显示与逻辑分离。