Ekli özelliği kaydetme (WPF .NET)

Bu makalede ekli bir özelliğin nasıl kaydedileceği ve ekli özelliğe Extensible Application Markup Language (XAML) ve kod aracılığıyla erişmenizi sağlayan ortak erişimcileri sağlama açıklanır. Eklenmiş özellikler, öğe modelinde bu ek özellikleri tanımlamasa bile, herhangi bir XAML öğesinde ayarlanabilecek ek özellik/değer çiftlerini etkinleştirir. Ek özelliklere genel olarak erişilebilir. İliştirilmiş özellikler genellikle geleneksel bir özellik sarmalayıcısı olmayan bir bağımlılık özelliği olan özelleştirilmiş bir form olarak tanımlanmıştır. Windows Presentation Foundation (WPF) türleri için en fazla iliştirilmiş özellikler de bağımlılık özellikleri olarak uygulanır. Herhangi bir türetilmiş tür için bağımlılık özellikleri oluşturabilirsiniz DependencyObject .

Önemli

.NET 6 ve .NET 5 için masaüstü Kılavuzu belgeleri (.NET Core 3,1 dahil) yapım aşamasındadır.

Örnek

Aşağıdaki örnek, yöntemi kullanılarak iliştirilmiş bir özelliğin bağımlılık özelliği olarak nasıl kaydedileceğ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. Yeni bir bağımlılık özelliği Için özellik meta verileri. Bu örnekte, HasFish özelliğin Boolean varsayılan değeri olarak ayarlanmış bir değer türü vardır false .

İliştirilmiş bir özelliğin sağlayıcı sınıfı, adlandırma kuralını ve ' i izleyen statik get/set erişimci yöntemleri sağlamalıdır Get<property name>Set<property name> . XAML okuyucu, eklenen özelliğin XAML özniteliğini tanımak ve değerini uygun türe çözümlemek için erişimcileri kullanır. Bu erişimciler, ekli bir özellik bağımlılık özelliği olarak kaydedilmese bile 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.