Udostępnij za pośrednictwem


Podsumowanie rozdziału 6. Kliknięcia przycisków

Uwaga

Ta książka została opublikowana wiosną 2016 roku i od tego czasu nie została zaktualizowana. Jest wiele w książce, która pozostaje cenna, ale niektóre materiały są nieaktualne, a niektóre tematy nie są już całkowicie poprawne ani kompletne.

Jest Button to widok, który umożliwia użytkownikowi zainicjowanie polecenia. Element A Button jest identyfikowany tekstem (i opcjonalnie obrazem pokazanym w rozdziale 13 mapy bitowe). Button W związku z tym definiuje wiele tych samych właściwości co Label:

Button Definiuje również trzy właściwości, które zarządzają wyglądem granicy, ale wsparcie tych właściwości i ich wzajemnej niezależności jest specyficzne dla platformy:

Button Dziedziczy również wszystkie właściwości VisualElement elementów i View, w tym BackgroundColor, HorizontalOptionsi VerticalOptions.

Przetwarzanie kliknięcia

Klasa Button definiuje Clicked zdarzenie, które jest wyzwalane, gdy użytkownik naciągnie Buttonelement . Procedura Click obsługi jest typu EventHandler. Pierwszym argumentem Button jest obiekt generujący zdarzenie; drugi argument jest obiektem EventArgs , który nie zawiera dodatkowych informacji.

Przykład ButtonLogger demonstruje prostą Clicked obsługę.

Klikanie przycisku Udostępniania

Wiele Button widoków może współdzielić tę samą Clicked procedurę obsługi, ale program obsługi zazwyczaj musi określić, który Button z nich jest odpowiedzialny za określone zdarzenie. Jednym z podejść jest przechowywanie różnych Button obiektów jako pól i sprawdzenie, który z nich wyzwala zdarzenie w procedurze obsługi.

W przykładzie TwoButtons przedstawiono tę technikę. Program pokazuje również, jak ustawić IsEnabled właściwość na Buttonfalse wartość , gdy naciśnięcie klawisza Button nie jest już prawidłowe. Wyłączone Button nie generuje Clicked zdarzenia.

Anonimowe programy obsługi zdarzeń

Można zdefiniować Clicked programy obsługi jako anonimowe funkcje lambda, jak pokazano w przykładzie ButtonLambdas . Nie można jednak udostępniać anonimowych procedur obsługi bez niechlujny kod odbicia.

Rozróżnianie widoków przy użyciu identyfikatorów

Można również wyróżnić wiele Button obiektów, ustawiając StyleId właściwość lub AutomationId właściwość na stringwartość . Ta właściwość jest definiowana przez Element program , ale nie jest używana w programie Xamarin.Forms. Ma być używany wyłącznie przez programy aplikacji.

Przykład SimplestKeypad używa tej samej procedury obsługi zdarzeń dla wszystkich 10 kluczy liczbowych na klawiaturze liczbowej i rozróżnia między nimi StyleId właściwość :

Zrzut ekranu przedstawiający najprostszą klawiaturę

Zapisywanie danych przejściowych

Wiele aplikacji musi zapisywać dane po zakończeniu działania programu i ponownie załadować te dane po ponownym uruchomieniu programu. Klasa Application definiuje kilka elementów członkowskich, które ułatwiają programowi zapisywanie i przywracanie danych przejściowych:

  • Właściwość Properties jest słownikiem z kluczami i object elementamistring. Zawartość słownika jest automatycznie zapisywana w magazynie lokalnym aplikacji przed zakończeniem działania programu i ładowana ponownie po uruchomieniu programu.
  • Klasa Application definiuje trzy chronione metody wirtualne, które standardowa App klasa programu zastępuje: OnStart, OnSleepi OnResume. Odnoszą się one do zdarzeń cyklu życia aplikacji.
  • Metoda SavePropertiesAsync zapisuje zawartość słownika.

Nie jest konieczne wywołanie metody SavePropertiesAsync. Zawartość słownika jest automatycznie zapisywana przed zakończeniem programu i pobierana przed uruchomieniem programu. Jest to przydatne podczas testowania programu, aby zapisać dane, jeśli program ulegnie awarii.

Przydatne są również następujące opisano:

  • Application.Current, właściwość statyczna zwracająca bieżący Application obiekt, którego można następnie użyć do uzyskania słownika Properties .

Pierwszym krokiem jest zidentyfikowanie wszystkich zmiennych na stronie, które mają być utrwalane po zakończeniu działania programu. Jeśli znasz wszystkie miejsca, w których te zmienne się zmieniają, możesz po prostu dodać je do słownika Properties w tym momencie. W konstruktorze strony można ustawić zmienne ze Properties słownika, jeśli klucz istnieje.

Większy program prawdopodobnie będzie musiał obsługiwać zdarzenia cyklu życia aplikacji. Najważniejszą OnSleep metodą jest. Wywołanie tej metody wskazuje, że program opuścił pierwszy plan. Być może użytkownik nacisnął przycisk Strona główna na urządzeniu lub wyświetlił wszystkie aplikacje lub zamyka telefon. Wywołanie metody to OnSleep jedyne powiadomienie odbierane przez program przed jego zakończeniem. Program powinien skorzystać z tej okazji, aby upewnić się, że Properties słownik jest aktualny.

Wywołanie OnResume wskazujące, że program nie zakończył wykonywania ostatniego wywołania, OnSleep ale jest teraz uruchomiony na pierwszym planie ponownie. Program może skorzystać z tej okazji do odświeżenia połączeń internetowych (na przykład).

Wywołanie wykonywane OnStart podczas uruchamiania programu. Nie trzeba czekać na wywołanie tej metody w celu uzyskania dostępu do słownika Properties , ponieważ zawartość została już przywrócona po wywołaniu konstruktora App .

Przykład PersistentKeypad jest bardzo podobny do SimplestKeypad, z tą różnicą, że program używa OnSleep przesłonięcia w celu zapisania bieżącego wpisu klawiatury i konstruktora strony w celu przywrócenia tych danych.

Uwaga

Innym podejściem do zapisywania ustawień programu jest klasa Xamarin.EssentialsPreferencje .