Shrnutí kapitoly 6. Klikání tlačítky
Poznámka:
Tato kniha byla publikována na jaře roku 2016 a od té doby nebyla aktualizována. Existuje mnoho v knize, která zůstává cenná, ale některé materiály jsou zastaralé a některá témata už nejsou zcela správná nebo úplná.
Toto Button
je zobrazení, které uživateli umožňuje inicializovat příkaz. A Button
je identifikován textem (a volitelně i obrázkem, jak je znázorněno v kapitole 13, Rastrové obrázky). V důsledku toho Button
definuje mnoho stejných vlastností jako Label
:
Button
definuje také tři vlastnosti, které řídí vzhled jeho hranice, ale podpora těchto vlastností a jejich vzájemné nezávislosti je specifická pro platformu:
BorderColor
typuColor
BorderWidth
typuDouble
BorderRadius
typuDouble
Button
také dědí všechny vlastnosti VisualElement
a View
, včetně BackgroundColor
, HorizontalOptions
a VerticalOptions
.
Zpracování kliknutí
Třída Button
definuje Clicked
událost, která se aktivuje, když uživatel klepne na Button
. Obslužná rutina Click
je typu EventHandler
. Prvním argumentem Button
je objekt generující událost. Druhým argumentem EventArgs
je objekt, který neposkytuje žádné další informace.
Ukázka ButtonLoggeru demonstruje jednoduché Clicked
zpracování.
Kliknutí na tlačítko Sdílení
Stejnou obslužnou Clicked
rutinu může sdílet více Button
zobrazení, ale obslužná rutina obvykle potřebuje určit, která Button
událost je zodpovědná. Jedním z přístupů je uložit různé Button
objekty jako pole a zkontrolovat, která událost se spouští v obslužné rutině.
Ukázka TwoButtons ukazuje tuto techniku. Program také ukazuje, jak nastavit IsEnabled
vlastnost Button
na false
hodnotu při stisknutí Button
již není platné. Zakázáno Button
negeneruje Clicked
událost.
Anonymní obslužné rutiny událostí
Je možné definovat Clicked
obslužné rutiny jako anonymní funkce lambda, jak ukazuje ukázka ButtonLambdas. Anonymní obslužné rutiny se ale nedají sdílet bez nějakého neuspořádaný kód reflexe.
Rozlišování zobrazení pomocí ID
Více Button
objektů lze také odlišit nastavením StyleId
vlastnosti nebo AutomationId
vlastnosti na hodnotu string
. Tato vlastnost je definována Element
, ale není použita v rámci Xamarin.Forms. Má být používán výhradně aplikacemi.
Ukázka NejjednoduššíKeypad používá stejnou obslužnou rutinu události pro všech 10 číselných klíčů na numerické klávesnici a rozlišuje mezi nimi s StyleId
vlastností:
Ukládání přechodných dat
Mnoho aplikací potřebuje ukládat data při ukončení programu a znovu načíst tato data při opětovném spuštění programu. Třída Application
definuje několik členů, které pomáhají programu ukládat a obnovovat přechodná data:
- Vlastnost
Properties
je slovník s klíči aobject
položkamistring
. Obsah slovníku se před ukončením programu automaticky uloží do místního úložiště aplikace a při spuštění programu se znovu načte. - Třída
Application
definuje tři chráněné virtuální metody, které standardníApp
třída programu přepíše:OnStart
,OnSleep
aOnResume
. Tyto události se týkají událostí životního cyklu aplikace. - Metoda
SavePropertiesAsync
uloží obsah slovníku.
Není nutné volat SavePropertiesAsync
. Obsah slovníku se před ukončením programu automaticky uloží a načte se před spuštěním programu. Při testování programu je užitečné ukládat data, pokud program selže.
Užitečné je také:
Application.Current
, statická vlastnost, která vrací aktuálníApplication
objekt, který pak můžete použít k získání slovníkuProperties
.
Prvním krokem je identifikace všech proměnných na stránce, kterou chcete zachovat při ukončení programu. Pokud znáte všechna místa, kde se tyto proměnné mění, můžete je v tomto okamžiku jednoduše přidat do slovníku Properties
. V konstruktoru stránky můžete nastavit proměnné ze slovníku Properties
, pokud klíč existuje.
Větší program bude pravděpodobně muset řešit události životního cyklu aplikace. Nejdůležitější je OnSleep
metoda. Volání této metody označuje, že program opustil popředí. Uživatel možná na zařízení stiskl tlačítko Domů nebo zobrazil všechny aplikace nebo vypne telefon. Jediným oznámením, které program obdrží před ukončením, je volání OnSleep
. Program by měl tuto příležitost využít, aby byl Properties
slovník aktuální.
Volání, které OnResume
označuje, že program se neukončil po posledním volání, OnSleep
ale nyní běží znovu v popředí. Program může tuto příležitost využít k aktualizaci připojení k internetu (například).
Při spuštění programu dojde k OnStart
volání. Není nutné čekat na volání této metody pro přístup ke slovníku Properties
, protože obsah již byl obnoven při volání konstruktoru App
.
Ukázka PersistentKeypad je velmi podobná NejjednoduššíKeypad s tím rozdílem, že program používá OnSleep
přepsání k uložení aktuální položky klávesnice a konstruktor stránky obnovit tato data.
Poznámka:
Další přístup k ukládání nastavení programu poskytuje Xamarin.Essentialstřída Preferences .