我正在与设计师一起开发 Windows Phone 7 应用程序。我使用 XNA 进行了 C# 开发,所以我了解 C#,但不熟悉模型/视图/ViewModel 架构。
我们的第一个破解是为任何给定视图激活多个 ViewModel。每个 ViewModel 都是模型中每个对象的中间层。
例如:我们有一个“朋友”页面,其中有一个ListBox
显示好友列表。所以我们做了一个FriendsListViewModel
这将处理得到一个ObservableCollection<Friend>
来自 XAML 将绑定到的模型。页面中还有其他可用功能(导航到其他页面、激活半相关功能等),因此这些功能包含在 FriendsPageViewModel 中。
这对我来说开始看起来很疯狂,所以我将 View 和 ViewModel 之间的关系设置为 1:1。
综上所述,我有一个包含两个部分的问题:
使用 MVVM,View 和 ViewModel 之间的常见关系是什么? (此处重点关注 Windows Phone 7 开发,以防它与 ASP.NET、WPF 或 Silverlight 有所不同)
作为该问题的一个可能的补充:假设 1:1 关系是普遍正确或可接受的关系:如果您正在处理类似Pivot
控制或Panorama
控制,你通常会给每个PivotItem
or PanoramaItem
它自己的视图模型?
在 MVVM 中,通常每个视图都有一个 ViewModel(存在例外)。 View 通常“绑定”到 ViewModel,ViewModel 是视图和数据模型之间的粘合剂。您的视图可以包含多个控件,每个控件将绑定到 ViewModel 上的特定属性(即数据源)。一旦这些属性之一更新(通过 C# 中的 INotifyPropertyChanged 接口),ViewModel 将通知视图。
在考虑 ViewModel 时,不要将其视为每个控件的单个 ViewModel。考虑绑定到共享 ViewModel 的单个属性的控件。
ViewModel 将模型中的数据提供给视图。 View 只能用于显示从 ViewModel 获取的数据。将视图中的代码保持在最低限度,并且仅与渲染控制元素相关。 ViewModel 负责从任何数据源查询数据,然后提供 View 可以挂钩的公共属性。
This MSDN链接 http://msdn.microsoft.com/en-us/magazine/dd419663.aspx有一篇非常详细的文章,但你可以得到一个很好的概要维基百科 http://en.wikipedia.org/wiki/Model_View_ViewModel.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)