Мессенджер отправлен в двух моделях просмотра - PullRequest
0 голосов
/ 28 октября 2019

Я использую это:

Messenger.Default.Send<NameMessage>(new NameMessage("Test"));

Это сообщение зарегистрировано в двух моделях View.

ViewModel 1:

Messenger.Default.Register<NameMessage>(this, MethodInMyViewModel1);

ViewModel 2:

Messenger.Default.Register<NameMessage>(this, MethodInMyViewModel2);

Когда я отправляю сообщение, вызываются два метода.

Но каждый раз у меня есть экземпляр моего представления.

Итак, приложение останавливается.

Как я могу вызвать конкретную модель представления с тем же сообщением?

1 Ответ

0 голосов
/ 29 октября 2019

Предполагая, что вы говорите о пространстве имен mvvmlight messenger, вы всегда можете отправить одно и то же сообщение с различным значением, в зависимости от того, на какую виртуальную машину вы нацеливаетесь, поэтому каждая виртуальная машина должна регистрироваться следующим образом (один ниже для VM1):

Messenger.Default.Register<NameMessage>(this, (m) =>
{
    switch (m.Value)
    {
        case "VM1":
             MethodInMyViewModel1();           
            break;
    } 
});

Сделайте то же самое для VM2, и при отправке сообщения передайте соответствующее целевое сообщение VM в NameMessage Value.

...