EventAggregator 在一个事件上多次触发

EventAggregator multiple fired on one event

我有 MainPageViewModel 上的 viewModel 调用事件之一的代码。当我订阅 "TRUE" 就像

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

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

如果我没有订阅 "true" 喜欢

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

再翻几页,事件就不会触发。 (也许 MainPageVM 被垃圾收集器清除了?)。

如何让一个事件多次无效?或者在导航到 1-2 页之前触发。

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

如果你想在不再活动的视图模型上接收事件(因此收集,除非你订阅 true),你可能想在其他地方订阅事件以做出反应它(在服务中?)或者根本不订阅(收集的视图模型不需要更新任何东西)。