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被垃圾收集器清除了?)。
如何使事件不工作多次?
true
意味着keepSubscriberReferenceAlive
-即如果你通过true
,你的订阅者将收到事件,即使他现在应该已经死了,因为它不再被引用了。这意味着,如果发布该事件,所有订阅过(使用true
)的订阅者都将收到该事件。如果你从视图A导航到视图B,并且每次一个新的视图模型B订阅时,所有这些视图模型B都会接收到事件。
如果你想在一个不再活动的视图模型上接收事件(因此除非你订阅true
),你可能想订阅其他地方的事件来对它做出反应(在一个服务中?)或者根本不订阅(一个收集的视图模型不需要更新任何东西)。