Этот вопрос является продолжением/«второй попыткой» для моего previous question.Где и как я могу подписаться на мессенджерские события внутри ViewModel?
Я создаю кросс-платформенное мобильное приложение с использованием рамки MvvmCross, , и я хотел бы использовать плагин Messenger для получения уведомлений о событиях, опубликованных где-то еще в моем коде.
Я пытался добавить подписку в ctor
следующим образом:
public class MyViewModel : BaseViewModel, IMyViewModel
{
private MvxSubscriptionToken _showMsgToken;
public MyViewModel()
{
_showMsgToken = MvxMessenger.Subscribe<ShowMsg>(message => onShowNavigation(), MvxReference.Weak);
}
private void onShowNavigation()
{
//Do Stuff
}
}
Теперь, когда я перейти к этому ViewModel все работает и уведомления принимаются.
Однако, когда я перемещаюсь и возвращаюсь к этой ViewModel, я вижу, что подписка добавляет еще одну запись в свойство подписки MvxMessenger
, в результате чего onShowAdsNavigation()
срабатывает дважды для каждого нового события.
Итак, как я могу подписаться на события в ViewModel? Или, может быть, мне нужно найти способ отказаться от подписки на события?
Хорошо, спасибо @Stuart – Liel