Sdílet prostřednictvím


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:

Button také dědí všechny vlastnosti VisualElement a View, včetně BackgroundColor, HorizontalOptionsa 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í:

Trojitý snímek obrazovky nejjednodušší klávesnice

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 a object 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, OnSleepa OnResume. 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íku Properties .

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 .