EventAggregator multiple在一个事件上触发

本文关键字:事件 一个 multiple EventAggregator | 更新日期: 2023-09-27 18:03:23

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

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

,然后在不同的页面之间移动几次,然后当这个事件被调用时,它在MainPageViewModel上触发几次。(可能MainPageVM创建多次?)

如果我订阅时没有"true"就像

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

并浏览几个页面,则不触发事件。(可能是MainPageVM被垃圾收集器清除了?)。

如何使事件不工作多次?

EventAggregator multiple在一个事件上触发

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

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