如果我有一个 PersonWindow 及其相应的 PersonWindowViewModel ,并且考虑到此视图将用于显示 Person 的集合,那该怎么办?我实现了公开的集合吗?
作为ObservableCollection<Person>
或ObservableCollection<PersonViewModel>
?
简而言之,我应该为每个要在View中表示的实体创建一个ViewModel(每个视图一个+每个模型类一个)?
答案 0 :(得分:3)
我发现,如果我的大多数模型在ViewModel
中被广泛使用,我通常会将其包裹起来,因为它会给我最大的灵活性。
如果View
仅用作另一个Model
的组件,并且本身没有任何特别有趣的显示属性/逻辑,我通常很乐意将其公开通过其他Model
的属性。它通常是基于您对模特所做的事情的判断。
在您的情况下,您可能会经常询问/显示ViewModels
,因此您可能会遇到以下情况:
如果属于这种情况,我会倾向于Person
建议将galenus
包裹在Person
并保留{{1}列表1}}关于你正在撰写的ViewModel
。
这样,如果您需要任何ObservableCollection<PersonViewModel>
特定字段来显示ViewModel
(或其他逻辑),您可以自由地将它们贴在View
上,而不会造成污染Person
模型。
但是,如果你正在做的只是在你的应用程序的一个小地方显示PersonViewModel
的列表,我可能不会打扰它们。
我发现Person
通常是一种平衡行为,最终你会感觉到可能需要Persons
。就个人而言,我可能更喜欢MVVM
包装,而不是我需要的,因为我经常发现在开发后期,我需要额外的灵活性。