场景:
- 应用程序加载 ViewA 及其关联的 ViewModelA。
-ViewA 有一个按钮,其命令绑定(bind)到 ViewModelA 上的命令。
-ViewModelA 处理命令,应创建并显示 ViewB 的实例。
问题是,谁应该负责创建 ViewB 的实例?
ViewModel 不应该对 View 一无所知似乎是合理的,所以我看到了一些可行的可能性:
1) ViewModelA 可以设置一个由 ViewA 监控的属性,以便 ViewA 知道创建 ViewB 的实例。但这似乎会给 ViewA 带来太多责任。
2)您可以将某种 ViewManager 服务注入(inject) ViewModelA,当它处理来自 ViewA 的命令时,它可以使用 command 参数将某种适当的元数据传递给 ViewManager 的 LoadView(metadata) 方法。
最佳答案
看answer来自arconaut(即使当时不是公认的答案,它似乎是最干净的方法:
这几乎就像你的第二个提案,只是更松散耦合。
关于view - 在 MVVM 中,谁负责控制新 View (当前 View 或其 ViewModel)的创建?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4753017/