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
),你可能想在其他地方订阅事件以做出反应它(在服务中?)或者根本不订阅(收集的视图模型不需要更新任何东西)。
我有 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
),你可能想在其他地方订阅事件以做出反应它(在服务中?)或者根本不订阅(收集的视图模型不需要更新任何东西)。