Aracılığıyla paylaş


Ekli mülkü kaydettirme

Bu makalede, ekli özelliğin nasıl kaydedildiği ve ekli özelliğe Genişletilebilir Uygulama Biçimlendirme Dili (XAML) ve kod aracılığıyla erişmenize olanak sağlayan genel erişimcilerin nasıl sağlandığı açıklanır. Ekli özellikler, öğe nesne modelinde bu ek özellikleri tanımlamasa bile herhangi bir XAML öğesinde ek özellik/değer çiftlerinin ayarlanmasını sağlar. Ek özelliklere genel olarak erişilebilir. Ekli özellikler genellikle geleneksel özellik sarmalayıcıya sahip olmayan özel bir bağımlılık özelliği biçimi olarak tanımlanır. Windows Presentation Foundation (WPF) türleri için ekli özelliklerin çoğu bağımlılık özellikleri olarak da uygulanır. Türetilmiş herhangi bir DependencyObject türde bağımlılık özellikleri oluşturabilirsiniz.

Örnek

Aşağıdaki örnek, RegisterAttached metodunu kullanarak ekli bir özelliğin bağımlılık özelliği olarak nasıl kaydedileceğini göstermektedir. Sağlayıcı sınıfı, özellik meta verilerinde varsayılan bir değer belirtme seçeneğine sahiptir. Özellik meta verileri hakkında daha fazla bilgi için bkz . Bağımlılık özelliği meta verileri. Bu örnekte, HasFish özelliği bir Boolean değer türüne sahiptir ve varsayılan değeri false olarak ayarlanmıştır.

Ekli bir özelliğin sağlayıcı sınıfı, Get<property name> ve Set<property name> adlandırma kuralına uyan statik get/set erişimci yöntemleri sunmalıdır. XAML okuyucusu, ekli özelliğin XAML özniteliğini tanımak ve değerini uygun türe çözümlemek için erişimcileri kullanır. Ekli bir özellik, bağımlılık özelliği olarak kaydedilmemiş olsa bile, bu erişim yöntemleri gerekli olmaktadır.

public class Aquarium : UIElement
{
    // Register an attached dependency property with the specified
    // property name, property type, owner type, and property metadata.
    public static readonly DependencyProperty HasFishProperty =
        DependencyProperty.RegisterAttached(
          "HasFish",
          typeof(bool),
          typeof(Aquarium),
          new FrameworkPropertyMetadata(defaultValue: false,
              flags: FrameworkPropertyMetadataOptions.AffectsRender)
        );

    // Declare a get accessor method.
    public static bool GetHasFish(UIElement target) =>
        (bool)target.GetValue(HasFishProperty);

    // Declare a set accessor method.
    public static void SetHasFish(UIElement target, bool value) =>
        target.SetValue(HasFishProperty, value);
}
Public Class Aquarium
    Inherits UIElement

    ' Register an attached dependency property with the specified
    ' property name, property type, owner type, and property metadata.
    Public Shared ReadOnly HasFishProperty As DependencyProperty =
        DependencyProperty.RegisterAttached("HasFish", GetType(Boolean), GetType(Aquarium),
            New FrameworkPropertyMetadata(defaultValue:=False,
                flags:=FrameworkPropertyMetadataOptions.AffectsRender))

    ' Declare a get accessor method.
    Public Shared Function GetHasFish(target As UIElement) As Boolean
        Return target.GetValue(HasFishProperty)
    End Function

    ' Declare a set accessor method.
    Public Shared Sub SetHasFish(target As UIElement, value As Boolean)
        target.SetValue(HasFishProperty, value)
    End Sub

End Class

Ayrıca bakınız