【问题标题】:Should ViewModels ever be reused by different Views? If so, when?ViewModel 是否应该被不同的 View 重用?如果有,什么时候?
【发布时间】:2011-06-10 06:19:35
【问题描述】:

根据我的阅读,在 MVVM 中,每个 View 都有自己对应的 ViewModel 似乎被认为是一种最佳实践,这是有道理的,因为 ViewModel 应该是 View 的模型。通常,似乎不鼓励不同视图重用 ViewModel。总是这样吗?如果不是,那么确定是否应以这种方式重用 ViewModel 的一般准则是什么?

我能想到的一种情况是,将 ViewModel 与不同的 View 重用可能令人满意的情况是,两个 View 使用来自 Model 的完全相同的数据,而 View 本身只是以不同的方式表示数据。如果 View 能够以不同的方式自己处理表示相同的数据,那么一个 ViewModel 可能能够有效地为每个 View 提供服务。

【问题讨论】:

    标签: wpf mvvm


    【解决方案1】:

    我们之所以有规则,是为了让你在打破规则之前三思而后行。

    也就是说:对两个相似的视图使用相同的 ViewModel 并没有错。您确实需要非常小心,不要让您的两个视图出现分歧,从而使您的视图模型尝试做两种不同的事情。

    这就是为什么建议每个视图有一个视图模型的原因。尽管这可能会导致重复,但从长远来看,它会使视图的维护变得更容易。

    至于重复,具有共享基类的视图模型类没有任何问题。

    【讨论】:

    • 再好不过了。对于多个视图,我认为从同一个 VM 开始,然后根据需要拆分它们和/或提取一个共同的祖先并没有错(记住 YAGNI)。
    猜你喜欢
    • 1970-01-01
    • 2011-04-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-06-27
    • 2012-09-22
    相关资源
    最近更新 更多