我有一个订阅了“NavigationCompletedEvent”事件的viewmodel。此视图模型需要在没有视图的情况下加载到内存中。订阅的代码就是事件就像
var navigationCompletedEvent = eventAggregator.GetEvent<NavigationCompletedEvent>();
navigationCompletedEvent.Subscribe(OnNavigationCompleted, ThreadOption.UIThread);
我已在Module中
显式创建了此viewmodel的对象 // Register other view objects with DI Container (Unity)
var container = ServiceLocator.Current.GetInstance<IUnityContainer>();
container.RegisterInstance(typeof(ModuleCTaskButtonViewModel),
new ModuleCTaskButtonViewModel(), new ExternallyControlledLifetimeManager());
但是当我从其他一些viewmodule中提升事件时,不会调用subscribe方法。
如果视图也加载到内存中,它可以正常工作。有什么想法吗?我该如何实现呢?
提前致谢。
答案 0 :(得分:1)
默认情况下,对Event聚合器的订阅是弱引用。为了使viewmodel保持活动状态,如果没有其他人正在引用它,则必须对Subscribe函数使用重载,该函数使用bool来表示您想要使用强引用。
尽管如此,我所知道的Unity咒语可能会维持所需的生命周期...但是,您的实验结果表明并非......