微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

wpf – MVVM概念中的混乱

我试图在过去两周内理解MVVM,但仍然有很多困惑理解它.

我最近启动了Windows Phone 8开发.

我对MVVM的理解,

M =模型意味着数据,具体是什么意思是模型应该被视为C语言的结构.它只有属性或成员变量(对象).它对View和View Model一无所知.

V =普通XAML.应该只有一种绑定方式,即使用DataContext.

VM = View Model是视图的模型. VM使用M来保存其数据(使用容器),VM负责将数据保存在数据库中或从数据库获取数据.数据库交互应该在VM中进行. VM应该实现INotifyPropertyChanged,因为它负责保存和获取数据.

请注意,我建议我对MVVM有错误的概念.

解决方法

您所说的一切在技术上都是正确的,但我会尝试以更抽象的方式处理设计模式,并考虑它试图解决的问题. MVVM正试图解决在视图和模型之间提供分离以及提供双向绑定(即从模型中提取数据并呈现数据,以及获取用户输入并将其保存回模型)的问题.

大多数模式都希望将视图和模型分开,因此在MVVM中仍然是相同的,但更为模糊的是如何将数据转换/格式化以便显示用户,以及如何将用户输入转换为模型.在许多MVC框架中,视图中模型数据的表示处理得很好,但是您通常可以自己进行用户输入并将数据转换回模型. MVVM旨在处理两者.

Microsoft选择使用DependencyProperty,ICommand和ValueConverters之类的东西来做到这一点.基本思想是您的View只会通过绑定松散地附加到viewmodel,因此理论上您可以将viewmodel重用于其他视图.这在另一个方向上是相同的(这种干净的双向绑定是使MVVM与MVC不同的原因),因为你的VM可以通知属性已经改变(这就是为什么你必须实现INotifyPropertyChanged),但VM有不知道视图是否有反应.当您想要重用这些组件时,这非常简单.

因此,了解MS尝试使用MVVM解决的问题,您可以更好地理解为什么像INotifyPropertyChanged这样的东西存在或者ICommand是什么,并希望充分利用MVVM模式.

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐