gpt4 book ai didi

wpf - 在 Prism/Composite MVVM WPF 应用程序中使 View 模型激活感知

转载 作者:行者123 更新时间:2023-12-04 19:13:50 25 4
gpt4 key购买 nike

在我的 MVMC 应用程序中,我有一个包含多个步骤的过程,基本上是一个向导。

我的 Controller 解析了我的外部 View (称为 WizardView)并将其添加到主区域。
WizardView包含一个显示向导进度的面包屑路径和一个用于加载其他 View 的子区域(称为 WizardRegion)。 Step1View是加载到 WizardRegion 中的第一个 View .

每个 View 都使用 Unity 容器将其 ViewModel 注入(inject)到构造函数中。
WizardViewModel订阅由步骤 View 模型发布的多个事件聚合事件。

随着每个步骤的完成,View Model 会发布一个事件 WizardViewModel用于存储状态,即WizardViewModel随着我们的进展,正在收集每一步的数据。步骤 ViewModel 还调用 Controller 将下一步加载到 WizardRegion .

在最后一步WizardViewModel保存向导的结果和 MainRegion导航回某个其他屏幕。

下次我们进入向导时,我们会创建所有 View 和 ViewModel 的新实例,但前一个向导中的事件订阅仍然存在。

如何让我的 View 模型知道它们已停用,以便我可以取消订阅我的事件?

另一种选择是取消订阅事件处理程序中的事件。这可能会起作用,但是当我退回向导并需要再次重新订阅事件时会增加复杂性。

最佳答案

解决方案是执行Microsoft.Practices.Prism.IActiveAware在我的 View 模型中。

public bool IsActive
{
get { return _isActive; }
set
{
if (_isActive != value)
{
_isActive = value;
DoActiveChangedWork(value);
}
}
}

public event EventHandler IsActiveChanged;

也可以在 View 中实现这一点,但这不是必需的。

关于wpf - 在 Prism/Composite MVVM WPF 应用程序中使 View 模型激活感知,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14894680/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com