Yeniden kullanılabilir EffectBehavior
Davranışlar, bir denetime efekt eklemek, arka kod arkası dosyalarından kod işleme kodunu kaldırmak için kullanışlı bir yaklaşımdır. Bu makalede, denetime Xamarin.Forms efekt eklemek için davranış oluşturma ve kullanma işlemleri gösterilmektedir.
Genel bakış
sınıfıEffectBehavior
, bir denetime davranış eklendiğinde bir Effect
örneği denetime ekleyen ve davranış denetimden ayrıldığında örneği kaldıran Effect
yeniden kullanılabilir Xamarin.Forms bir özel davranıştır.
Aşağıdaki davranış özellikleri, davranışı kullanacak şekilde ayarlanmalıdır:
- Group : efekt sınıfı için özniteliğin değeri
ResolutionGroupName
. - Name – efekt sınıfı için özniteliğin değeri
ExportEffect
.
Efektler hakkında daha fazla bilgi için bkz . Efektler.
Not
EffectBehavior
, örneğinde bulunabilen özel bir sınıftır ve öğesinin Xamarin.Formsbir parçası değildir.
Davranış Oluşturma
sınıfı EffectBehavior
sınıfından Behavior<T>
türetilir. Burada T
bir View
. Bu, sınıfın EffectBehavior
herhangi bir Xamarin.Forms denetime eklenebileceği anlamına gelir.
Bağlanabilir Özellikleri Uygulama
EffectBehavior
sınıfı, davranış denetime eklendiğinde denetime bir Effect
eklemek için kullanılan iki BindableProperty
örneği tanımlar. Bu özellikler aşağıdaki kod örneğinde gösterilmiştir:
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
kullanıldığında, Group
özelliği efektin özniteliğinin ResolutionGroupName
değerine ayarlanmalıdır. Ayrıca özelliği, Name
efekt sınıfı için özniteliğinin ExportEffect
değerine ayarlanmalıdır.
Geçersiz Kılmaları Uygulama
sınıfı, EffectBehavior
aşağıdaki kod örneğinde gösterildiği gibi sınıfın ve OnDetachingFrom
yöntemlerini Behavior<T>
geçersiz kılarOnAttachedTo
:
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);
}
...
}
OnAttachedTo
yöntemi, ekli denetimi parametre olarak geçirerek yöntemini çağırarak AddEffect
kurulumu gerçekleştirir. OnDetachingFrom
yöntemi, ekli denetimi parametre olarak geçirerek yöntemini çağırarak RemoveEffect
temizleme gerçekleştirir.
Davranış İşlevselliğini Uygulama
Davranışın amacı, davranış denetime eklendiğinde ve özelliklerinde Group
tanımlanan öğesini bir denetime eklemek Effect
ve davranış denetimden ayrıldığında öğesini kaldırmaktırEffect
.Name
Temel davranış işlevi aşağıdaki kod örneğinde gösterilmiştir:
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;
}
}
AddEffect
yöntemi, denetime iliştirilene EffectBehavior
yanıt olarak yürütülür ve ekli denetimi parametre olarak alır. Yöntemi daha sonra alınan efekti denetimin Effects
koleksiyonuna ekler. RemoveEffect
yöntemi, denetimden ayrılmaya EffectBehavior
yanıt olarak yürütülür ve ekli denetimi parametre olarak alır. Yöntemi daha sonra efekti denetimin Effects
koleksiyonundan kaldırır.
GetEffect
yöntemi yöntemini Effect.Resolve
kullanarak öğesini Effect
alır. Etki, ve Name
özellik değerlerinin birleştirilmiş bir şekilde Group
bulunur. Bir platform etkiyi sağlamazsa, Effect.Resolve
yöntem değer olmayannull
bir değer döndürür.
Davranışı Kullanma
Sınıfı EffectBehavior
, aşağıdaki XAML kod örneğinde gösterildiği gibi bir denetimin koleksiyonuna eklenebilir Behaviors
:
<Label Text="Label Shadow Effect" ...>
<Label.Behaviors>
<local:EffectBehavior Group="Xamarin" Name="LabelShadowEffect" />
</Label.Behaviors>
</Label>
Eşdeğer C# kodu aşağıdaki kod örneğinde gösterilmiştir:
var label = new Label {
Text = "Label Shadow Effect",
...
};
label.Behaviors.Add (new EffectBehavior {
Group = "Xamarin",
Name = "LabelShadowEffect"
});
Davranışın Group
ve Name
özellikleri, platforma özgü her projedeki efekt sınıfı için ve ExportEffect
özniteliklerinin değerlerine ResolutionGroupName
ayarlanır.
Çalışma zamanında, davranış denetime Label
eklendiğinde, Xamarin.LabelShadowEffect
denetimin Effects
koleksiyonuna eklenir. Bu, aşağıdaki ekran görüntülerinde gösterildiği gibi denetim tarafından görüntülenen metne Label
gölge eklenmesine neden olur:
Bu davranışı kullanarak denetimlerden etki ekleme ve kaldırma avantajı, kazan plakası efekt işleme kodunun arka planda kod dosyalarından kaldırılabilmesidir.
Özet
Bu makalede, denetime efekt eklemek için bir davranış kullanıldığı gösterilmiştir. sınıfıEffectBehavior
, bir denetime davranış eklendiğinde bir Effect
örneği denetime ekleyen ve davranış denetimden ayrıldığında örneği kaldıran Effect
yeniden kullanılabilir Xamarin.Forms bir özel davranıştır.