Czy ktoś mógłby być na tyle uprzejmy, aby dać mi przykład, jak wysyłać i rejestrować obiekty niestandardowe między klasami za pomocą programu Messenger MVVM Light lub wskazywać mi samouczek, który to omawia (najlepiej konkretny przykład) ? Próbowałem użyć programu Messenger, aby przekazać obiekt w moim projekcie innej klasie, ale nigdy nie odniosłem sukcesu. Szukałem w Internecie przykładów, ale nie znalazłem niczego, co pokazałoby mi to, czego potrzebuję. Dzięki.MVVM Lekki Posłaniec - Wysyłanie i rejestrowanie obiektów
28
A
Odpowiedz
50
Jesse Liberty firmy Microsoft ma świetny numer concrete walk through, w jaki sposób korzystać z wiadomości w ramach MVVM Light. Założeniem jest stworzenie klasy, która będzie działać jako typ wiadomości, subskrybować, a następnie publikować.
public class GoToPageMessage
{
public string PageName { get; set; }
}
To będzie zasadniczo wysłać wiadomość na podstawie powyższego typu/klasy ...
private object GoToPage2()
{
var msg = new GoToPageMessage() { PageName = "Page2" };
Messenger.Default.Send<GoToPageMessage>(msg);
return null;
}
Teraz można zarejestrować dla danego rodzaju komunikatu, który jest tej samej klasy zdefiniowane powyżej i dostarczają metoda, która zostanie wywołana, gdy wiadomość zostanie odebrana, w tym przypadku ReceiveMessage
.
Messenger.Default.Register<GoToPageMessage>
(
this,
(action) => ReceiveMessage(action)
);
private object ReceiveMessage(GoToPageMessage action)
{
StringBuilder sb = new StringBuilder("/Views/");
sb.Append(action.PageName);
sb.Append(".xaml");
NavigationService.Navigate(
new System.Uri(sb.ToString(),
System.UriKind.Relative));
return null;
}
wolę używać rodzaj widoku w wiadomości, a nie część nazwy, ponieważ będzie ona zostać zmieniona podczas zmiany nazwy strony lub przeniesienie go do innej przestrzeni nazw/folderu –
Nie Sticky wydarzeniu? –
Dzięki, to było dokładnie to, czego szukałem. Myślę, że mam zamiar przekazać typy, a nie ciągi, sama intellisense sprawia, że życie jest o wiele przyjemniejsze. –