如何解决视图,模型和视图模型之间的常见关系是什么?
| 我正在与一位设计师合作开发Windows Phone 7应用。我已经用XNA完成了C#开发,所以我知道C#,但对Model / View / ViewModel体系结构不熟悉。 我们的第一个裂缝是针对任何给定视图都激活了多个ViewModel。每个ViewModel都是模型中每个对象的中间层。 例如:我们有一个\“ Friends \”页面,其中有一个ListBox
,显示Friends列表。因此,我们做了一个ѭ1,可以处理从XAML绑定到的模型中获得的ѭ2。页面中还有其他功能(导航到其他页面,激活半相关功能等),这些功能包含在FriendsPageViewModel中。
在我看来,这太疯狂了,因此我将View和ViewModel的关系设为1:1。
在描述了所有内容之后,我有两个部分的问题:
使用MVVM,视图和ViewModel之间的通用关系是什么? (在这里重点讨论Windows Phone 7的开发情况,以防它与ASP.NET,WPF或Silverlight有所不同)
作为该问题的一个可能的补充:说1:1关系通常是正确的或被接受的:如果您要处理的是Pivot
控件或Panorama
控件,通常会给每个PivotItem
或PanoramaItem
自己的ViewModel ?
解决方法
在MVVM中,通常每个视图都有一个ViewModel(存在例外)。视图通常“绑定”到ViewModel,这是视图和数据模型之间的粘合剂。您的视图可以包含多个控件,每个控件都将绑定到ViewModel上的特定属性(即数据源)。这些属性之一一旦更新(通过C#中的INotifyPropertyChanged接口),ViewModel将随后通知View。
考虑ViewModels时,不要将其视为每个控件的单个ViewModel。考虑将控件绑定到共享ViewModel的单个属性。
ViewModel将数据从模型提供给View。 View仅应用于显示从ViewModel获取的数据。尽量减少视图中的代码,并且仅与渲染控件元素有关。 ViewModel负责从任何数据源中查询数据,然后提供View可以挂钩的公共属性。
这个MSDN链接上有一篇非常详细的文章,但是您可以在Wikipedia上获得一个很好的提要。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。