İliştirilmiş Özellikler
Eklenen özellikler, bir nesnenin kendi sınıfının tanımlamadığı bir özellik için değer atamasına olanak tanır. Örneğin, alt öğeler, üst öğelerini kullanıcı arabiriminde nasıl sunulacakları konusunda bilgilendirmek için ekli özellikleri kullanabilir. Denetim, Grid
ve ekli özellikleri ayarlanarak alt öğe satırının ve Grid.Column
sütununun belirtilmesine Grid.Row
olanak tanır. Grid.Row
ve Grid.Column
ekli özelliklerdir çünkü bunlar kendisinde değil, öğesinin Grid
alt öğelerinde Grid
ayarlanır.
Bağlanabilir özellikler aşağıdaki senaryolarda ekli özellikler olarak uygulanmalıdır:
- Tanımlama sınıfı dışındaki sınıflar için kullanılabilir bir özellik ayarı mekanizması olması gerektiğinde.
- Sınıfı, diğer sınıflarla kolayca tümleştirilmesi gereken bir hizmeti temsil ettiğinde.
Bağlanabilir özellikler hakkında daha fazla bilgi için bkz . Bağlanabilir Özellikler.
Ekli özellik oluşturma
Ekli özellik oluşturma işlemi aşağıdaki gibidir:
- Yöntem aşırı yüklemelerinden
CreateAttached
biriyle birBindableProperty
örnek oluşturun. - Ekli özellik için erişimci olarak PropertyName ve PropertyName yöntemlerini sağlayın
Get
static
.Set
Özellik oluşturma
Diğer türlerde kullanılmak üzere ekli özellik oluştururken, özelliğin oluşturulduğu sınıfın öğesinden BindableObject
türetmesi gerekmez. Bununla birlikte , erişimcilerin hedef özelliği veya türetilmesi BindableObject
gerekir.
Ekli özellik türündeki BindableProperty
bir public static readonly
özellik bildirilerek oluşturulabilir. Bağlanabilir özellik, yöntem aşırı yüklemelerinden BindableProperty.CreateAttached
birinin döndürülen değerine ayarlanmalıdır. Bildirimi, sahip olan sınıfın gövdesinde, ancak üye tanımlarının dışında olmalıdır.
Önemli
Ekli özelliklerin adlandırma kuralı, ekli özellik tanımlayıcısının yönteminde CreateAttached
belirtilen özellik adıyla eşleşmesi ve sonuna "Özellik" eklenmesi gerektiğidir.
Aşağıdaki kod ekli bir özelliğin örneğini gösterir:
public static readonly BindableProperty HasShadowProperty =
BindableProperty.CreateAttached ("HasShadow", typeof(bool), typeof(ShadowEffect), false);
Bu, türünde bool
adlı HasShadowProperty
ekli bir özellik oluşturur. özelliği sınıfına ShadowEffect
aittir ve varsayılan değerine false
sahiptir.
Oluşturma sırasında belirtilebilen parametreler de dahil olmak üzere bağlanabilir özellikler oluşturma hakkında daha fazla bilgi için bkz . Bağlanabilir özellik oluşturma.
Erişimci oluşturma
Static Get
PropertyName ve Set
PropertyName yöntemleri ekli özellik için erişimci olarak gereklidir, aksi takdirde özellik sistemi ekli özelliği kullanamaz. Get
PropertyName erişimcisi aşağıdaki imzaya uygun olmalıdır:
public static valueType GetPropertyName(BindableObject target)
Get
PropertyName erişimcisi, ekli özelliğin karşılık gelen BindableProperty
alanında bulunan değeri döndürmelidir. Bu, yöntemini çağırarak GetValue
, değerin alınacağı bağlanabilir özellik tanımlayıcısını geçirerek ve ardından sonuçta elde edilen değeri gerekli türe dönüştürerek gerçekleştirilebilir.
Set
PropertyName erişimcisi aşağıdaki imzaya uygun olmalıdır:
public static void SetPropertyName(BindableObject target, valueType value)
Set
PropertyName erişimcisi, ekli özellik için karşılık gelen BindableProperty
alanın değerini ayarlamalıdır. Bu, yöntemi çağrılarak SetValue
, değerin ayarlanacağı bağlanabilir özellik tanımlayıcısı ve ayarlanacak değer geçirilerek gerçekleştirilebilir.
Her iki erişimci için de hedef nesnenin öğesi olması veya öğesinden BindableObject
türetilmesi gerekir.
Aşağıdaki kod örneği, ekli özelliğin HasShadow
erişimcilerini gösterir:
public static bool GetHasShadow (BindableObject view)
{
return (bool)view.GetValue (HasShadowProperty);
}
public static void SetHasShadow (BindableObject view, bool value)
{
view.SetValue (HasShadowProperty, value);
}
Ekli özelliği kullanma
Ekli bir özellik oluşturulduktan sonra XAML veya koddan kullanılabilir. XAML'de bu, ortak dil çalışma zamanı (CLR) ad alanı adını ve isteğe bağlı olarak bir derleme adını belirten ad alanı bildirimiyle ön ekli bir ad alanı bildirilerek elde edilir. Daha fazla bilgi için bkz . XAML Ad Alanları.
Aşağıdaki kod örneği, özel türe başvuran uygulama koduyla aynı derleme içinde tanımlanan ekli bir özellik içeren özel tür için bir XAML ad alanını gösterir:
<ContentPage ... xmlns:local="clr-namespace:EffectsDemo" ...>
...
</ContentPage>
Ad alanı bildirimi, aşağıdaki XAML kod örneğinde gösterildiği gibi belirli bir denetimde ekli özellik ayarlanırken kullanılır:
<Label Text="Label Shadow Effect" local:ShadowEffect.HasShadow="true" />
Eşdeğer C# kodu aşağıdaki kod örneğinde gösterilmiştir:
var label = new Label { Text = "Label Shadow Effect" };
ShadowEffect.SetHasShadow (label, true);
Ekli özelliği stille kullanma
Ekli özellikler, bir stile göre denetime de eklenebilir. Aşağıdaki XAML kodu örneği, denetimlere Label
uygulanabilen ekli özelliği kullanan HasShadow
açık bir stili gösterir:
<Style x:Key="ShadowEffectStyle" TargetType="Label">
<Style.Setters>
<Setter Property="local:ShadowEffect.HasShadow" Value="true" />
</Style.Setters>
</Style>
, Style
aşağıdaki kod örneğinde gösterildiği gibi işaretleme uzantısını kullanarak StaticResource
özelliğini Style
örneğe ayarlayarak Style
öğesine uygulanabilirLabel
:
<Label Text="Label Shadow Effect" Style="{StaticResource ShadowEffectStyle}" />
Stiller hakkında daha fazla bilgi için bkz . Stiller.
Gelişmiş senaryolar
Ekli özellik oluştururken, gelişmiş ekli özellik senaryolarını etkinleştirmek için ayarlanabilen bir dizi isteğe bağlı parametre vardır. Bu özellik değişikliklerini algılamayı, özellik değerlerini doğrulamayı ve özellik değerlerini zorlamayı içerir. Daha fazla bilgi için bkz . Gelişmiş senaryolar.