Xamarin.Forms
MessagingCenter
Szukaj…
Wprowadzenie
Xamarin.Forms ma wbudowany mechanizm przesyłania wiadomości w celu promowania oddzielonego kodu. W ten sposób wyświetl modele i inne komponenty nie muszą się znać. Mogą komunikować się za pomocą prostej umowy przesyłania wiadomości.
Istnieją dwa główne składniki do korzystania z MessagingCenter
.
Subskrybować ; nasłuchuj wiadomości z określonym podpisem (kontrakt) i wykonuj kod po otrzymaniu wiadomości. Wiadomość może mieć wielu subskrybentów.
Wyślij ; wysyłanie wiadomości do subskrybentów, aby działali.
Prosty przykład
Tutaj zobaczymy prosty przykład użycia MessagingCenter w Xamarin.Forms.
Najpierw rzućmy okiem na subskrybowanie wiadomości. W modelu FooMessaging
subskrybujemy wiadomość pochodzącą ze strony MainPage
. Wiadomość powinna brzmieć „Cześć”, a kiedy ją otrzymamy, rejestrujemy moduł obsługi, który ustawia właściwość Greeting
. Wreszcie this
znaczy prąd FooMessaging
instancji rejestracji dla tej wiadomości.
public class FooMessaging
{
public string Greeting { get; set; }
public FooMessaging()
{
MessagingCenter.Subscribe<MainPage> (this, "Hi", (sender) => {
this.Greeting = "Hi there!";
});
}
}
Aby wysłać wiadomość uruchamiającą tę funkcję, musimy mieć stronę o nazwie MainPage
i zaimplementować kod jak poniżej.
public class MainPage : Page
{
private void OnButtonClick(object sender, EventArgs args)
{
MessagingCenter.Send<MainPage> (this, "Hi");
}
}
Na naszej stronie MainPage
znajduje się przycisk z MainPage
obsługi, która wysyła wiadomość. powinna this
być instancja strony MainPage
.
Przekazywanie argumentów
Możesz także przekazać argumenty z komunikatem do pracy.
Wykorzystamy sklasyfikowane w poprzednim przykładzie i rozszerzymy je. W części odbierającej tuż za wywołaniem metody Subscribe
dodaj typ argumentu, którego oczekujesz. Upewnij się również, że zadeklarowałeś również argumenty w podpisie modułu obsługi.
public class FooMessaging
{
public string Greeting { get; set; }
public FooMessaging()
{
MessagingCenter.Subscribe<MainPage, string> (this, "Hi", (sender, arg) => {
this.Greeting = arg;
});
}
}
Wysyłając wiadomość, pamiętaj o dołączeniu wartości argumentu. Tutaj również dodajesz typ bezpośrednio za metodą Send
i dodajesz wartość argumentu.
public class MainPage : Page
{
private void OnButtonClick(object sender, EventArgs args)
{
MessagingCenter.Send<MainPage, string> (this, "Hi", "Hi there!");
}
}
W tym przykładzie użyto prostego ciągu, ale można również użyć dowolnego innego typu (złożonych) obiektów.
Rezygnacja z subskrypcji
Gdy nie musisz już odbierać wiadomości, możesz po prostu zrezygnować z subskrypcji. Możesz to zrobić w następujący sposób:
MessagingCenter.Unsubscribe<MainPage> (this, "Hi");
Podając argumenty, musisz anulować subskrypcję pełnego podpisu, tak jak poniżej:
MessagingCenter.Unsubscribe<MainPage, string> (this, "Hi");