Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
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á.
Triggery a chování jsou podobné, protože obě jsou určeny k použití v souborech XAML ke zjednodušení interakcí prvků nad rámec použití datových vazeb a rozšíření funkcí elementů XAML. Triggery i chování se téměř vždy používají s vizuálními objekty uživatelského rozhraní.
Chcete-li podporovat triggery a chování, obě VisualElement a Style podporují dvě vlastnosti kolekce:
VisualElement.TriggersaStyle.TriggerstypuIList<TriggerBase>VisualElement.BehaviorsaStyle.BehaviorstypuIList<Behavior>
Aktivační události
Trigger je podmínka (změna vlastnosti nebo spuštění události), která má za následek odpověď (jinou změnu vlastnosti nebo spuštění kódu). Vlastnost Triggers VisualElement a Style je typu IList<TriggersBase>. TriggerBase je abstraktní třída, ze které jsou odvozeny čtyři zapečetěné třídy:
Triggerpro odpovědi na základě změn vlastnostíEventTriggerpro odpovědi na základě aktivací událostíDataTriggerpro odpovědi na základě datových vazebMultiTriggerpro odpovědi na základě více aktivačních událostí
Aktivační událost je vždy nastavena na element, jehož vlastnost je změněna triggerem.
Nejjednodušší aktivační událost
Třída Trigger kontroluje změnu hodnoty vlastnosti a reaguje nastavením jiné vlastnosti stejného prvku.
Trigger definuje tři vlastnosti:
PropertytypuBindablePropertyValuetypuObjectSetterstypIList<SetterBase>, vlastnost obsahuTrigger
Kromě toho vyžaduje, Trigger aby byla nastavena následující vlastnost zděděná:TriggerBase
TargetTypeoznačit typ prvku, na kterémTriggerje připojen
Value Podmínku Property tvoří a Setters kolekce je odpověď. Pokud je uvedená Property hodnota označená Valuehodnotou , Setter pak se použijí objekty v kolekci Setters . Pokud má Property jinou hodnotu, odeberou settery. Setter definuje dvě vlastnosti, které jsou stejné jako první dvě vlastnosti Trigger:
EntryPop ukázka ukazuje, jak Trigger použití na může Entry zvýšit velikost Entry via Scale vlastnost, když IsFocused je truevlastnost .Entry
I když to není běžné, Trigger dá se nastavit v kódu, jak ukazuje ukázka EntryPopCode .
Ukázka StyledTriggers ukazuje, jak Trigger lze nastavit v objektu Style , který se má použít na více Entry prvků.
Aktivace akcí a animací
Je také možné spustit malý kód založený na triggeru. Tento kód může být animace, která cílí na vlastnost. Jedním z běžných způsobů je použití objektu EventTrigger, který definuje dvě vlastnosti:
Eventtypustring, název událostiActionstypuIList<TriggerAction>, seznam akcí, které se mají spustit v reakci.
Chcete-li použít, je třeba napsat třídu, která je odvozena od TriggerAction<T>, obecně TriggerAction<VisualElement>. V této třídě můžete definovat vlastnosti. Jedná se o prosté vlastnosti CLR, nikoli o vlastnosti svázatelné, protože TriggerAction se odvozují od BindableObject. Je nutné přepsat metodu Invoke , která je volána při vyvolání akce. Argument je cílový prvek.
Příkladem ScaleAction je třída v knihovně Xamarin.FormsBook.Toolkit. Volá ScaleTo vlastnost, která animuje Scale vlastnost elementu. Vzhledem k tomu, že jedna z jeho vlastností je typu Easing, EasingConverter třída umožňuje použít standardní Easing statická pole v XAML.
Ukázka EntrySwell ukazuje, jak vyvolat ScaleAction z EventTrigger objektů, které monitorují Focused a Unfocused události.
Ukázka CustomEasingSwell ukazuje, jak definovat vlastní funkci easing pro ScaleAction soubor s kódem.
Akce můžete vyvolat také pomocí ( Trigger odlišené od EventTrigger). To vyžaduje, abyste věděli, že TriggerBase definujete dvě kolekce:
EnterActionstypuIList<TriggerAction>ExitActionstypuIList<TriggerAction>
Ukázka EnterExitSwell ukazuje, jak tyto kolekce používat.
Další triggery událostí
Třída ScaleUpAndDownAction v knihovně Xamarin.FormsBook.Toolkit volá ScaleTo dvakrát vertikální navýšení a snížení kapacity. Ukázka ButtonGrowth používá tuto metodu ve stylu EventTrigger k poskytnutí vizuální zpětné vazby při Button stisknutí tlačítka. Tato dvojitá animace je také možná pomocí dvou akcí v kolekci typu. DelayedScaleAction
Třída ShiverAction v knihovně Xamarin.FormsBook.Toolkit definuje přizpůsobitelnou akci chvění. Ukázka ShiverButtonDemo to ukazuje.
Třída NumericValidationAction v knihovně Xamarin.FormsBook.Toolkit je omezena na Entry prvky a nastaví TextColor vlastnost červenou, pokud Text vlastnost není double. Ukázka TriggerEntryValidation ji ukazuje.
Triggery dat
Podobá DataTrigger se s tím rozdílem Trigger , že místo monitorování vlastnosti pro změny hodnoty monitoruje datovou vazbu. To umožňuje vlastnost v jednom prvku ovlivnit vlastnost v jiném prvku.
DataTrigger definuje tři vlastnosti:
Ukázka GenderColors vyžaduje knihovnu SchoolOfFineArt a nastaví barvy jmen studentů na modrou nebo růžovou na Sex základě vlastnosti:
Ukázka ButtonEnabler nastaví IsEnabled vlastnost False Entry na, pokud Length vlastnost Text vlastnosti Entry rovná se 0. Všimněte si, že Text vlastnost je inicializována na prázdný řetězec; ve výchozím nastavení je nulla DataTrigger nebude správně fungovat.
Kombinování podmínek v multitriggeru
Jedná se MultiTrigger o kolekci podmínek. Když jsou všechny true, pak settery použijí. Třída definuje dvě vlastnosti:
ConditionstypuIList<Condition>SetterstypuIList<Setter>
Condition je abstraktní třída a má dvě sestupné třídy:
PropertyCondition, která má aValuevlastnosti, jako jePropertyTriggerBindingCondition, která má aValuevlastnosti, jako jeBindingDataTrigger
V ukázce AndConditions je barva pouze v případě, BoxView že jsou všechny čtyři Switch prvky zapnuté.
Ukázka OrConditions ukazuje, jak můžete nastavit BoxView barvu při zapnutí některého ze čtyř Switch prvků. To vyžaduje uplatnění Zákona De Morgana a vrácení veškeré logiky.
Kombinování A a NEBO logiky není tak snadné a obecně vyžaduje neviditelné Switch prvky pro průběžné výsledky. Ukázka XorConditions ukazuje, jak lze povolit, Button pokud některý ze dvou Entry prvků obsahuje určitý text, ale ne, pokud oba mají nějaký text zadaný.
Chování
Cokoli můžete s triggerem dělat, můžete také provádět s chováním, ale chování vždy vyžaduje třídu, která je odvozena od Behavior<T> následujících dvou metod a přepíše následující dvě metody:
Argument je prvek, ke kterému je chování připojeno. Obecně platí OnAttachedTo , že metoda připojí některé obslužné rutiny událostí a OnDetachingFrom odpojí je. Vzhledem k tomu, že taková třída obvykle ukládá nějaký stav, obvykle nelze sdílet v objektu Style.
Ukázka BehaviorEntryValidation je podobná triggerEntryValidation s tím rozdílem, že používá chování – NumericValidationBehavior třídu v knihovněXamarin.Forms Book.Toolkit.
Chování s vlastnostmi
Behavior<T>je odvozen od , který je odvozen z BehaviorBindableObject, takže svázatelné vlastnosti lze definovat podle chování. Tyto vlastnosti mohou být aktivní v datových vazbách.
To je demonstrováno v programu EmailValidationDemo, který využívá ValidEmailBehavior třídu v knihovně Xamarin.FormsBook.Toolkit. ValidEmailBehavior má vlastnost bindable jen pro čtení a slouží jako zdroj v datových vazbách.
Ukázka EmailValidationConv používá stejné chování k zobrazení jiného typu indikátoru, který signalizují, že e-mailová adresa je platná.
Ukázka EmailValidationTrigger je variantou předchozí ukázky. ButtonGlide používá DataTrigger kombinaci s tímto chováním.
Přepíná a zaškrtávací políčka
Je možné zapouzdřovat chování přepínacího tlačítka ve třídě, například ToggleBehavior v Xamarin.Formsknihovně Book.Toolkit, a pak definovat všechny vizuály pro přepínač zcela v XAML.
Ukázka ToggleLabel používá ToggleBehavior k DataTrigger použití Label se dvěma textovými řetězci pro přepínač.
Ukázka FormattedTextToggle rozšiřuje tento koncept přepnutím mezi dvěma FormattedString objekty.
Třída ToggleBase v knihovně Xamarin.FormsBook.Toolkit je odvozena od ContentView, definuje IsToggled vlastnost a obsahuje ToggleBehavior pro přepínací logiku. To usnadňuje definování přepínacího tlačítka v XAML, jak ukazuje ukázka TraditionalCheckBox.
SwitchCloneDemo obsahuje SwitchClone třídu, která je odvozena a ToggleBase používá TranslateAction třídu k vytvoření přepínací tlačítko, které se podobá .Xamarin.FormsSwitch
A RotateAction v Xamarin.FormsBook.Toolkit poskytuje animaci použitou k vytvoření animované páky v ukázce LeverToggle.
Reakce na klepnutí
Jednou z nevýhod EventTrigger je, že ho nemůžete připojit k TapGestureRecognizer klepnutí. Seznámení s tímto problémem je účelem TapBehavior v Xamarin.FormsBook.Toolkit
Ukázka BoxViewTapShiver používá k TapBehavior použití dřívějších ShiverAction prvků pro klepnutí BoxView na prvky.
Ukázka ShiverViews ukazuje, jak snížit kód zapouzdřením ShiverView třídy.
Přepínače
Xamarin.FormsKnihovna Book.Toolkit má RadioBehavior také třídu pro vytváření přepínačů seskupených podle string názvu skupiny.
Program RadioLabels používá textové řetězce pro jeho přepínač. Ukázka RadioStyle používá Style pro rozdíl ve vzhledu mezi zaškrtnutými a nezaškrtnutými tlačítky. Ukázka RadioImages používá krabicové obrázky pro jeho přepínače:
Ukázka TraditionalRadios nakreslí tradiční zobrazení přepínačů s tečkou uvnitř kruhu.
Prolnutí a orientace
Poslední ukázka, MultiColorSliders umožňuje přepínat mezi třemi různými zobrazeními výběru barev pomocí přepínačů. Tři zobrazení zeslabí a zmizí pomocí FadeEnableAction Xamarin.Formsknihovny Book.Toolkit.
Program také reaguje na změny orientace mezi orientací na výšku a na šířku GridOrientationBehavior Xamarin.Formspomocí knihovny Book.Toolkit.

