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:
BorderColor
typuColor
BorderWidth
typuDouble
BorderRadius
typuDouble
Button
Dziedziczy również wszystkie właściwości VisualElement
elementów i View
, w tym BackgroundColor
, HorizontalOptions
i VerticalOptions
.
Przetwarzanie kliknięcia
Klasa Button
definiuje Clicked
zdarzenie, które jest wyzwalane, gdy użytkownik naciągnie Button
element . 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 Button
false
wartość , gdy naciśnięcie 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 string
wartość . 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ść :
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 iobject
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 standardowaApp
klasa programu zastępuje:OnStart
,OnSleep
iOnResume
. 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żącyApplication
obiekt, którego można następnie użyć do uzyskania słownikaProperties
.
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 .