我在MainPageViewModel上的一个viewModel调用事件上有代码。当我订阅“TRUE”时,如
eventAggregator type.GetEvent<UpdateUserBooksEvent>().Subscribe(str =>
{
GetUserBooks();
}, true);
然后在不同页面之间移动几次,然后在调用此事件时,它会多次在MainPageViewModel上触发。 (也许MainPageVM多次创建?)
如果我订阅时没有“真实”,如
eventAggregator type.GetEvent<UpdateUserBooksEvent>().Subscribe(str =>
{
GetUserBooks();
});
然后继续几页,然后事件就不会被触发。 (可能是垃圾收集器清除了MainPageVM?)。
如何使活动多次无效?或者在导航远1-2页之前解雇。
答案 0 :(得分:0)
true
表示keepSubscriberReferenceAlive
- 即如果您通过true
,即使他 现在已经死亡,您的订阅者也会收到该活动,因为它不是& #39; t引用了。这意味着,如果您发布活动,则所有订阅的订阅者(使用true
)都将收到该活动。如果您从视图A导航到视图B,并且每次新视图模型B订阅时,所有这些视图模型B都将接收该事件。
如果您想要在不再活动的视图模型上接收事件(因此除非您使用true
订阅,否则会收集),您可能希望在其他地方订阅该事件以作出反应它(在服务中?)或根本没有订阅(收集的视图模型不需要更新任何东西)。