Udostępnij za pośrednictwem


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:

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ć Effectelement . 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:

Przykładowa aplikacja z aplikacją EffectsBehavior

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.