我正在使用c#wpf中的mvvm,我对mvvm有一点了解。 我在My ViewMode classl中创建了我的View类的对象。是否违反了mvvm模式?如何 ?如果有人详细解释这一点会很棒。
答案 0 :(得分:0)
MVVM模式的重点是维护View(向用户呈现控件的显示)与Model(数据,业务逻辑,数据访问)和ViewModel(模型之间的粘合)的分离和观点)。 VM不应该担心UI(即View)问题,因此在viewmodel中创建和使用视图会违反该MVVM模式。
视图几乎总是由UI元素组成,例如按钮或文本块。 Viewmodel应关注属性等内容,例如UserName
,StartDate
或WarningState
。然后将这些VM属性绑定(使用DataBinding
)到视图中UI元素的属性...因此视图依赖于VM 而不是相反。 VM从中获取数据的位置是首先填充这些属性的模型,或者对于数据输入,它们可能都是空白的,应用程序依赖于用户在视图中输入数据。
例如,您可能希望将WarningState绑定到TextBox,但同样可以将它绑定到ComboBox。或者你可以使用转换器并将其绑定到矩形的前景色,或者用于完全不同的其他东西的UI元素的背景色。
关键是这些是VM不需要担心的事情:它所关心的只是呈现数据/状态。它是如何处理该信息(或不处理它)的观点。通过这种方式,您可以使用不同的版本完全替换视图,而无需更改VM中的任何 ...您已成功将显示与逻辑分开。