在我的 MVMC 应用程序中,我有一个包含多个步骤的过程,基本上是一个向导。
我的控制器解析了我的外部视图(调用它WizardView
)并将其添加到主区域。
WizardView
包含一个面包屑路径以显示向导的进度和一个子区域以将其他视图加载到其中(称为 this WizardRegion
)。Step1View
是加载到的第一个视图WizardRegion
。
每个视图都使用 Unity 容器将其 ViewModel 注入到构造函数中。
WizardViewModel
订阅由步骤视图模型发布的多个事件聚合事件。
随着每个步骤的完成,视图模型会发布一个WizardViewModel
用于存储状态的事件,这意味着WizardViewModel
随着我们的进行收集来自每个步骤的数据。步骤 ViewModel 还调用控制器将下一步加载到WizardRegion
.
在最后一步WizardViewModel
保存向导的结果并MainRegion
导航回其他屏幕。
下次进入向导时,我们会创建所有视图和 ViewModel 的新实例,但前一个向导中的事件订阅仍然存在。
如何让我的视图模型知道它们已停用,以便我可以取消订阅我的事件?
另一种选择是取消订阅事件处理程序中的事件。这可能会起作用,但是当我退回向导并需要再次重新订阅事件时会增加复杂性。