İliştirilmiş Özellikler

Download Sample Örneği indirme

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 Gridalt öğ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:

  1. Yöntem aşırı yüklemelerinden CreateAttached biriyle bir BindableProperty örnek oluşturun.
  2. Ekli özellik için erişimci olarak PropertyName ve PropertyName yöntemlerini sağlayınGetstatic.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 BindableObjecttüretmesi gerekmez. Bununla birlikte , erişimcilerin hedef özelliği veya türetilmesi BindableObjectgerekir.

Ekli özellik türündeki BindablePropertybir 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 booladlı HasShadowPropertyekli bir özellik oluşturur. özelliği sınıfına ShadowEffect aittir ve varsayılan değerine falsesahiptir.

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 GetPropertyName ve SetPropertyName yöntemleri ekli özellik için erişimci olarak gereklidir, aksi takdirde özellik sistemi ekli özelliği kullanamaz. GetPropertyName erişimcisi aşağıdaki imzaya uygun olmalıdır:

public static valueType GetPropertyName(BindableObject target)

GetPropertyName 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.

SetPropertyName erişimcisi aşağıdaki imzaya uygun olmalıdır:

public static void SetPropertyName(BindableObject target, valueType value)

SetPropertyName 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 BindableObjecttü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.