Bagikan melalui


Cara mendaftarkan properti terlampir (WPF .NET)

Artikel ini menjelaskan cara mendaftarkan properti terlampir dan menyediakan aksesor publik yang memungkinkan Anda mengakses properti terlampir melalui Extensible Application Markup Language (XAML) dan kode. Properti terlampir memungkinkan pasangan properti/nilai tambahan diatur pada elemen XAML apa pun, meskipun elemen tidak menentukan properti tambahan tersebut dalam model objeknya. Properti tambahan dapat diakses secara global. Properti terlampir biasanya didefinisikan sebagai bentuk khusus properti dependensi yang tidak memiliki pembungkus properti konvensional. Sebagian besar properti terlampir untuk jenis Windows Presentation Foundation (WPF) juga diimplementasikan sebagai properti dependensi. Anda dapat membuat properti dependensi pada jenis turunan apa pun DependencyObject .

Penting

Dokumentasi Panduan Desktop untuk .NET 7 dan .NET 6 sedang dibangun.

Contoh

Contoh berikut menunjukkan cara mendaftarkan properti terlampir sebagai properti dependensi, dengan menggunakan RegisterAttached metode . Kelas penyedia memiliki opsi untuk menentukan nilai default dalam metadata properti. Untuk informasi selengkapnya tentang metadata properti, lihat Metadata properti dependensi. Dalam contoh ini, HasFish properti memiliki Boolean jenis nilai, dengan nilai defaultnya diatur ke false.

Kelas penyedia untuk properti terlampir harus menyediakan metode aksesor get/set statis yang mengikuti konvensi Get<property name> penamaan dan Set<property name>. Pembaca XAML menggunakan aksesor untuk mengenali atribut XAML untuk properti terlampir dan menyelesaikan nilainya ke jenis yang sesuai. Aksesor ini diperlukan bahkan jika properti terlampir tidak terdaftar sebagai properti dependensi.

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

Baca juga