我有一个带有几个区域的 PRISM RegionManager - 顶部的功能区区域和下面的主要内容区域供我查看 - 相当基本。
该应用程序从主要内容区域中的“主页”视图开始。当我单击功能区上的按钮时,我将第二个视图注入内容区域并在区域管理器中导航到它。当我单击此视图上的按钮时,应将其删除并显示原始视图。
我目前正在使用 RegionManager.Add() 方法手动添加第二个视图。当我想删除它时,我发布了一个事件,该事件由获取当前活动删除的管理器类使用,为它调用区域管理器上的 Remove(),然后导航回原始视图。
这一切都很好,除了当我调用 Remove() 后第二个视图保持活动状态,并保留它在其生命周期内所做的任何订阅的句柄!对于弱事件引用,我尝试使用 false 显式调用订阅,但无论如何这是默认设置,它没有帮助。我已经尝试过创建视图(发现和注入)和通过移除和停用来移除视图的两种类型。他们都没有帮助。这是一个真正的问题,因为当我想在未来创建相同的视图(该视图的新实例)时,我留下了它们的几个实例,它们都订阅了相同的事件,即使其中一些实例是多年前从区域经理中删除。
我是否需要手动取消订阅我在视图中订阅的每个事件(非常不受欢迎)?或者有什么方法可以处理控件/将其标记为已停用,以便删除其订阅?
我觉得我在这里做了一些愚蠢的事情,但这让我完全被难住了。
谢谢