Element EffectBehavior wielokrotnego użytku
Zachowania to przydatne podejście do dodawania efektu do kontrolki, usuwania efektu płyty kotłowej obsługującego kod z plików za pomocą kodu. W tym artykule pokazano tworzenie Xamarin.Forms i używanie zachowania w celu dodania efektu do kontrolki.
Omówienie
Klasa EffectBehavior
jest zachowaniem niestandardowym wielokrotnego użytku Xamarin.Forms , które dodaje Effect
wystąpienie do kontrolki, gdy zachowanie jest dołączone do kontrolki, i usuwa Effect
wystąpienie, gdy zachowanie jest odłączone od kontrolki.
Aby korzystać z zachowania, należy ustawić następujące właściwości zachowania:
- Group — wartość atrybutu
ResolutionGroupName
dla klasy effect. - Name — wartość atrybutu
ExportEffect
dla klasy effect.
Aby uzyskać więcej informacji na temat efektów, zobacz Efekty.
Uwaga
Jest EffectBehavior
to klasa niestandardowa, która może znajdować się w przykładzie i nie jest częścią Xamarin.Formsklasy .
Tworzenie zachowania
Klasa EffectBehavior
pochodzi z Behavior<T>
klasy , gdzie T
jest .View
Oznacza to, że EffectBehavior
klasa może być dołączona do dowolnej Xamarin.Forms kontrolki.
Implementowanie właściwości możliwych do powiązania
Klasa EffectBehavior
definiuje dwa BindableProperty
wystąpienia, które są używane do dodawania Effect
elementu do kontrolki, gdy zachowanie jest dołączone do kontrolki. Te właściwości są wyświetlane w poniższym przykładzie kodu:
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
Po zużyciu Group
właściwości należy ustawić wartość atrybutu ResolutionGroupName
dla efektu. Ponadto Name
właściwość powinna być ustawiona na wartość atrybutu ExportEffect
dla klasy effect.
Implementowanie przesłonięć
Klasa EffectBehavior
zastępuje OnAttachedTo
metody Behavior<T>
i OnDetachingFrom
klasy, jak pokazano w poniższym przykładzie kodu:
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
wykonuje konfigurację przez wywołanie AddEffect
metody, przekazując dołączoną kontrolkę jako parametr. Metoda OnDetachingFrom
wykonuje oczyszczanie, wywołując metodę RemoveEffect
, przekazując dołączoną kontrolkę jako parametr.
Implementowanie funkcji zachowania
Celem zachowania jest dodanie zdefiniowanych Effect
we właściwościach Group
i Name
do kontrolki, gdy zachowanie jest dołączone do kontrolki, i usunięcie Effect
, gdy zachowanie jest odłączone od kontrolki. Podstawowe funkcje zachowania są wyświetlane w poniższym przykładzie kodu:
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
jest wykonywana w odpowiedzi na dołączanie do EffectBehavior
kontrolki i odbiera dołączoną kontrolkę jako parametr. Następnie metoda dodaje pobrany efekt do kolekcji kontrolki Effects
. Metoda RemoveEffect
jest wykonywana w odpowiedzi na EffectBehavior
odłączenie od kontrolki i odbiera dołączoną kontrolkę jako parametr. Następnie metoda usuwa efekt z kolekcji kontrolki Effects
.
Metoda GetEffect
używa Effect.Resolve
metody , aby pobrać Effect
element . Efekt znajduje się za pośrednictwem łączenia Group
wartości właściwości i Name
. Jeśli platforma nie zapewnia efektu, Effect.Resolve
metoda zwróci wartość innąnull
niż .
Korzystanie z zachowania
Klasę EffectBehavior
można dołączyć do Behaviors
kolekcji kontrolki, jak pokazano w poniższym przykładzie kodu XAML:
<Label Text="Label Shadow Effect" ...>
<Label.Behaviors>
<local:EffectBehavior Group="Xamarin" Name="LabelShadowEffect" />
</Label.Behaviors>
</Label>
Równoważny kod języka C# jest pokazany w poniższym przykładzie kodu:
var label = new Label {
Text = "Label Shadow Effect",
...
};
label.Behaviors.Add (new EffectBehavior {
Group = "Xamarin",
Name = "LabelShadowEffect"
});
Właściwości Group
i Name
zachowania są ustawione na wartości ResolutionGroupName
atrybutów i ExportEffect
dla klasy efektu w każdym projekcie specyficznym dla platformy.
W czasie wykonywania, gdy zachowanie jest dołączone do kontrolki Label
, Xamarin.LabelShadowEffect
element zostanie dodany do kolekcji kontrolki Effects
. Spowoduje to dodanie cienia do tekstu wyświetlanego przez kontrolkę Label
, jak pokazano na poniższych zrzutach ekranu:
Zaletą tego zachowania w celu dodawania i usuwania efektów z kontrolek jest to, że kod obsługi efektu płyty kotłowej można usunąć z plików zza kodu.
Podsumowanie
W tym artykule pokazano użycie zachowania w celu dodania efektu do kontrolki. Klasa EffectBehavior
jest zachowaniem niestandardowym wielokrotnego użytku Xamarin.Forms , które dodaje Effect
wystąpienie do kontrolki, gdy zachowanie jest dołączone do kontrolki, i usuwa Effect
wystąpienie, gdy zachowanie jest odłączone od kontrolki.