MVVM Light Messenger runs multiple times

I use MVVM Light and use messages for communication between ViewModels to let ViewModel know when it is normal to do something. My problem is that I register for a message and then receive it several times. therefore, so that I do not have any program running, I must create Boolean flags to see if it has already been received. Any idea why this is so and how I can stop it?

+3
source share
5 answers

Make sure you unregister message handlers when you no longer need them. The messenger keeps a link to registered methods, and this prevents them from collecting garbage.

ViewModels: , , ( IDisposable ).

( , Windows ) Messenger.Unregister , , . .

MVVM .

+8

, , :

static bool isRegistered = false;

:

if( !isRegistered )
{
   Messenger.Default.Register<MyMessage>(this, OnMessageReceived);
   isRegisterd = true;
}
+5

. , Messenger.Default.Register . MVVMLight Messenger "x" . , "", .

- , MVVMLight ?

+1

, , , - . silverlight, , , viewModel, , .

+1

, . , View X, View Z, Z ViewModel. NavigationCacheMode Required

<Page
  ........
  ........
  NavigationCacheMode="Required">
0

Source: https://habr.com/ru/post/1764536/


All Articles