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");



Modified text is an extract of the original Stack Overflow Documentation
Licencjonowany na podstawie CC BY-SA 3.0
Nie związany z Stack Overflow