繁体   English   中英

正确的MVVM方法

[英]Correct approach to MVVM

我正在尝试了解使用ViewModel和滞后模型的最佳方法是什么。

我的模型是自定义项目的集合(例如用户配置列表)。

我了解,公开此模型的正确方法是通过ConfigurationListViewModel ,该模型将模型的列表转换为ui可读的数据。

但是,我应该如何管理ConfigurationListViewModel背后的项目?
单个配置本身是否应该具有ConfigurationViewModel
还是主ConfigurationListViewModel应该处理其项目的暴露情况?

如果我想要一个配置添加到我的ConfigurationList ,我称之为Add()方法,以我的ConfigurationListViewModel ,它本身就是创建一个新的Configuration ,或者我应该创建一个新的( ConfigurationConfigurationViewModel ?)父,然后调用一个Add ([ ConfigurationConfigurationViewModel ?] newConf)

确实,答案是以上任何一种

如果在视图模型中使用的数据具有等同于模型的形式,你是不是通过创建自己做任何好处ConfigurationViewModel类,它是只是一个副本Configuration类。

至于添加,您可以选择任何一种方式。 有时您想在视图模型中进行所有编辑,以便可以通过不实际修改模型来“还原”更改。 如果不必担心,那么首先修改模型并传播到视图模型与方法一样有效。

综上所述,您的方法都不会违反MVVM。 选择最有意义的东西,尤其是语义上的和将来的维护。 总的来说,我更喜欢简单而不是盲目遵守诸如“每个数据对象都需要视图模型表示”之类的原则。

在我的经验, ConfigurationListViewModel包含ObservableCollection<ConfigurationViewModel>是最好的(最灵活,最干净)的方式。 仅当显示选定项目与未选定项目不同时,当这些项目知道其选定状态时很有用。 而且由于选择不是模型应该关心的,因此您需要一个具有IsSelected属性的ConfigurationViewModel

列表的更新(添加,删除项)(如果由用户/ UI触发)应主要由模型完成。 (例如,模型的责任是知道如何初始化新项目。)然后,ListViewModel应该进行相应的更改:从新创建的模型项目中创建一个视图模型,或者删除在模型中被删除的视图模型。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM