EventAggregator多次触发一个事件

时间:2016-08-21 17:13:16

标签: c# uwp prism windows-10-universal

我在MainPageViewModel上的一个viewModel调用事件上有代码。当我订阅“TRUE”时,如

eventAggregator type.GetEvent<UpdateUserBooksEvent>().Subscribe(str => 
{
    GetUserBooks();
}, true);

然后在不同页面之间移动几次,然后在调用此事件时,它会多次在MainPageViewModel上触发。 (也许MainPageVM多次创建?)

如果我订阅时没有“真实”,如

eventAggregator type.GetEvent<UpdateUserBooksEvent>().Subscribe(str => 
{
    GetUserBooks();
});

然后继续几页,然后事件就不会被触发。 (可能是垃圾收集器清除了MainPageVM?)。

如何使活动多次无效?或者在导航远1-2​​页之前解雇。

1 个答案:

答案 0 :(得分:0)

true表示keepSubscriberReferenceAlive - 即如果您通过true,即使他 现在已经死亡,您的订阅者也会收到该活动,因为它不是& #39; t引用了。这意味着,如果您发布活动,则所有订阅的订阅者(使用true)都将收到该活动。如果您从视图A导航到视图B,并且每次新视图模型B订阅时,所有这些视图模型B都将接收该事件。

如果您想要在不再活动的视图模型上接收事件(因此除非您使用true订阅,否则会收集),您可能希望在其他地方订阅该事件以作出反应它(在服务中?)或根本没有订阅(收集的视图模型不需要更新任何东西)。