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模式. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- Windows 7 – Windows 7中的Windows任务计划程序如何识别失
- win7 VirtualBox E_FAIL (0x80004005)解决
- 反编译的DLL – 帮助判断它是C#还是VB.NET的线索?
- 如何获得新式Windows拖放游标
- Windows Server的替代品?
- windows-7 – Windows Server 2008 R2或Windows 7
- windows-phone-7 – WP7列表框在视口中获取项目(类似于日历
- windows-xp – 找到瓶颈:Windows XP上的磁盘I / O.
- windows10下安装opencv3.2+QT Creator+MingGW
- Windows安装MySQL8