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.
Chování je užitečným přístupem k přidání efektu do ovládacího prvku a odebrání kódu pro zpracování kódu ze souborů s často používanými kotlovou deskou. Tento článek ukazuje vytvoření a využívání Xamarin.Forms chování pro přidání efektu do ovládacího prvku.
Přehled
Třída EffectBehavior je opakovaně použitelné Xamarin.Forms vlastní chování, které přidává Effect instanci do ovládacího prvku, když je chování připojeno k ovládacímu prvku, a odebere Effect instanci, když je chování odpojeno od ovládacího prvku.
Aby se toto chování používalo, musí být nastaveny následující vlastnosti chování:
- Group – hodnota atributu
ResolutionGroupNamepro třídu efektu. - Name – hodnota atributu
ExportEffectpro třídu efektu.
Další informace o efektech naleznete v tématu Efekty.
Poznámka:
Jedná se EffectBehavior o vlastní třídu, která může být umístěna v ukázce a není součástí Xamarin.Forms.
Vytvoření chování
Třída EffectBehavior je odvozena od Behavior<T> třídy, kde T je View. To znamená, že EffectBehavior třídu lze připojit k libovolnému Xamarin.Forms ovládacímu prvku.
Implementace vlastností s možností vytvoření vazby
Třída EffectBehavior definuje dvě BindableProperty instance, které se používají k přidání Effect do ovládacího prvku, když je chování připojeno k ovládacímu prvku. Tyto vlastnosti jsou uvedeny v následujícím příkladu kódu:
public class EffectBehavior : Behavior<View>
{
public static readonly BindableProperty GroupProperty =
BindableProperty.Create ("Group", typeof(string), typeof(EffectBehavior), null);
public static readonly BindableProperty NameProperty =
BindableProperty.Create ("Name", typeof(string), typeof(EffectBehavior), null);
public string Group {
get { return (string)GetValue (GroupProperty); }
set { SetValue (GroupProperty, value); }
}
public string Name {
get { return(string)GetValue (NameProperty); }
set { SetValue (NameProperty, value); }
}
...
}
EffectBehavior Při použití Group je vlastnost by měla být nastavena na hodnotu ResolutionGroupName atributu efektu. Kromě toho Name by vlastnost měla být nastavena na hodnotu ExportEffect atributu pro třídu efektu.
Implementace přepsání
Třída EffectBehavior přepíše OnAttachedTo a OnDetachingFrom metody Behavior<T> třídy, jak je znázorněno v následujícím příkladu kódu:
public class EffectBehavior : Behavior<View>
{
...
protected override void OnAttachedTo (BindableObject bindable)
{
base.OnAttachedTo (bindable);
AddEffect (bindable as View);
}
protected override void OnDetachingFrom (BindableObject bindable)
{
RemoveEffect (bindable as View);
base.OnDetachingFrom (bindable);
}
...
}
Metoda OnAttachedTo provádí nastavení voláním AddEffect metody a předáním připojeného ovládacího prvku jako parametru. Metoda OnDetachingFrom provádí vyčištění voláním RemoveEffect metody a předáním připojeného ovládacího prvku jako parametru.
Implementace funkce chování
Účelem chování je přidat Effect definované v ovládacím Group prvku a Name vlastnosti do ovládacího prvku, když je toto chování připojeno k ovládacímu prvku, a odebrat Effect , kdy je chování odpojeno od ovládacího prvku. Základní funkce chování je znázorněna v následujícím příkladu kódu:
public class EffectBehavior : Behavior<View>
{
...
void AddEffect (View view)
{
var effect = GetEffect ();
if (effect != null) {
view.Effects.Add (GetEffect ());
}
}
void RemoveEffect (View view)
{
var effect = GetEffect ();
if (effect != null) {
view.Effects.Remove (GetEffect ());
}
}
Effect GetEffect ()
{
if (!string.IsNullOrWhiteSpace (Group) && !string.IsNullOrWhiteSpace (Name)) {
return Effect.Resolve (string.Format ("{0}.{1}", Group, Name));
}
return null;
}
}
Metoda AddEffect se spustí v reakci na EffectBehavior připojení k ovládacímu prvku a obdrží připojený ovládací prvek jako parametr. Metoda pak přidá načtený efekt do kolekce ovládacího prvku Effects . Metoda RemoveEffect se spustí v reakci na EffectBehavior odpojení od ovládacího prvku a obdrží připojený ovládací prvek jako parametr. Metoda pak odebere efekt z kolekce ovládacího prvku Effects .
Metoda GetEffect používá metodu Effect.Resolve k načtení Effect. Efekt se nachází prostřednictvím zřetězení Group hodnot a Name vlastností. Pokud platforma efekt neposkytuje, Effect.Resolve vrátí metoda nehodnocenínull .
Využívání chování
Třídu EffectBehavior lze připojit k Behaviors kolekci ovládacího prvku, jak je znázorněno v následujícím příkladu kódu XAML:
<Label Text="Label Shadow Effect" ...>
<Label.Behaviors>
<local:EffectBehavior Group="Xamarin" Name="LabelShadowEffect" />
</Label.Behaviors>
</Label>
Ekvivalentní kód jazyka C# je znázorněn v následujícím příkladu kódu:
var label = new Label {
Text = "Label Shadow Effect",
...
};
label.Behaviors.Add (new EffectBehavior {
Group = "Xamarin",
Name = "LabelShadowEffect"
});
Vlastnosti Group Name chování jsou nastaveny na hodnoty ResolutionGroupName a ExportEffect atributy pro třídu efektu v každém projektu specifickém pro platformu.
Pokud je chování připojené k ovládacímu Label prvku za běhu, Xamarin.LabelShadowEffect přidá se do kolekce ovládacího prvku Effects . Výsledkem je přidání stínu do textu zobrazeného ovládacím Label prvku, jak je znázorněno na následujících snímcích obrazovky:

Výhodou tohoto chování při přidávání a odebírání efektů z ovládacích prvků je, že kód pro zpracování efektu kotle lze odebrat ze souborů kódu za kódem.
Shrnutí
Tento článek demonstroval použití chování k přidání efektu do ovládacího prvku. Třída EffectBehavior je opakovaně použitelné Xamarin.Forms vlastní chování, které přidává Effect instanci do ovládacího prvku, když je chování připojeno k ovládacímu prvku, a odebere Effect instanci, když je chování odpojeno od ovládacího prvku.