Share via


Ekli özelliği kaydetme (WPF .NET)

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.

Önemli

.NET 7 ve .NET 6 için Masaüstü Kılavuzu belgeleri yapım aşamasındadır.

Örnek

Aşağıdaki örnekte, yöntemini kullanarak ekli bir özelliğin bağımlılık özelliği olarak nasıl kaydedildiği gösterilmektedir RegisterAttached . 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 özelliğin HasFish varsayılan değeri olarak ayarlanmış falsebir Boolean değer türü vardır.

Ekli bir özelliğin sağlayıcı sınıfı, ve Set<property name>adlandırma kuralına Get<property name> uyan statik get/set erişimci yöntemleri sağlamalı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şimciler gereklidir.

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