1

この質問は、私の以前の質問に対するフォローアップ/「2回目の試み」です。

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 に戻ると、Subscription が別のエントリをMvxMessengersubscriptions プロパティに追加していonShowAdsNavigation()て、新しいイベントごとに 2 回発生していることがわかります。

では、ViewModel でイベントをサブスクライブするにはどうすればよいでしょうか? それとも、イベントの登録を解除する方法を見つける必要がありますか?

4

1 に答える 1