【发布时间】:2011-12-30 16:12:59
【问题描述】:
(注意:我选择不使用导航框架)
我有一个与 WizardView 链接的 WizardViewModel。
WizardViewModel 声明并实例化一个命令“Next”。
它还包含一个 SpellViewModel 类型的属性“ActiveSpell”。
SpellViewModel 包含多个 PageViewModel,每个都有对应的 View。
ActivePage 属性(在 SpellViewModel 上)告诉 ui 采用哪个视图。
现在我有以下问题:
当我点击一个按钮切换到下一页时,
我需要访问 WizardViewModel 中定义的“下一步”命令,
但我只能访问那里的 PageViewModel。
我可以为每个子 ViewModel 添加一个 Parent 属性,
但我不确定这是否是个好主意。
或者也许还有另一种更好/更常见的方法来做到这一点。
【问题讨论】:
-
听起来您可能需要将命令分离到自己的类中
-
本质上并没有错,在 MVVM 中让子 ViewModel 了解他们的父母。实际上,您可以在子 ViewModel 的构造函数中使用依赖注入,并且 要求 让子 ViewModel 了解父级。另一种处理方法是让父 ViewModel 订阅子级引发的事件。但是,正如我在回答中指出的那样,您会发现在大型应用程序中使用事件聚合器会更容易,就像 Sailor 所描述的那样。