我需要一些关于MVVM模式的帮助。
我创建了一个ViewModel,它公开了要在名为A的视图的列表视图中显示的数据和命令。
此ViewModel也用于名为B的视图中。在此视图中,我只需要公开一些属性而不需要命令,但我必须再创建2个属性。
为View B创建更具体的ViewModel是否更好,即使它涉及同一个对象?
答案 0 :(得分:7)
我建议使用合成,有两个视图模型,它们都有一个属性,包含一个包含公共属性的视图模型。然后,两个视图模型应该只具有其特定的其他属性和命令。
答案 1 :(得分:0)
很难回答。但我可以告诉你我们为我们的应用做了什么。我们有一个viewmodel,它或多或少是视图独立的,它只是作为我们的业务数据的包装器,并包含几乎所有显示该模型的部分中使用的所有东西。现在对于视图部分,我们有非常具体的视图模型。像ProjectTreeViewModel或SearchResultViewmodel一样,具有相应的Item视图模型。 Item viewmodel不需要再次实现所有逻辑,只需要聚合一般模型视图模型。 为了给出一个更好的类比:
如果您有File
,Drive
和Folder
型号。您可以创建FileViewModel
,DriveViewModel
和FolderViewModel
。但只有一个ExplorerItemViewModel
。这只需要提供一个属性来公开底层视图模型。其余的取决于您的数据模板。