Вы можете попробовать отправить простое сообщение со строковым тегом и получить это сообщение, сопоставив строковый тег. Примерно так:
Часть кода отправителя, расположенная, возможно, в чем-то вроде ViewModel1.cs
Messenger.Default.Send<string>("Dummy text message", "String_ToHelpMatchTheMsg");
Получение конечной части кода, отвечающего на это сообщение выше, возможно, находится в каком-то другом файле, что-то вроде ViewModel2.cs
...
Messenger.Default.Register<string>(this, "String_ToHelpMatchTheMsg", executeThisFunction);
private void executeThisFunction(string strMsg)
{
//your code would go here to run upon receiving the message
// The following line will display: "Dummy text message"
System.Windows.Browser.HtmlPage.Window.Alert("msg passed: " + strMsg);
}
Обратите внимание, что вам не нужно ничего делать с текстовым сообщением, которое передается с кодом сообщения выше. Только одна часть кода отправляет некоторый ping другой части кода, чтобы попросить какой-то другой раздел выполнить некоторый код. Важной строкой является та, в которой я использовал «String_ToHelpMatchTheMsg», потому что это ключ, используемый для соответствия отправителя и получателя. Почти как при создании собственного квази-события, после запуска метода Send метод Register получает уведомление и запускает также свою собственную функцию.
Я использовал это с кнопкой «Закрыть» в дочернем окне, чтобы закрыть его. Кнопка «Закрыть» в представлении дочернего окна привязывается к команде реле в его childWindowViewModel. Эта команда ретрансляции имеет приведенный выше код для отправки сообщения в ParentViewModel. Часть Register в ParentViewModel отвечает на это сообщение, вызывая метод, закрывающий ChildWindow, который был первоначально создан из этого parentViewModel.
Как только вы познакомитесь с обменом сообщениями, вы сможете использовать больше атрибутов, чтобы получатель мог перезвонить отправителю, чтобы вернуть статус или некоторые данные обратно. Ищите делегатов и лямбда-функции для достижения этой цели.
Все это, чтобы избежать размещения кода в коде, чтобы закрыть дочернее окно! :-)
Используйте по своему усмотрению.
Приветствия.
Mario