DependencyProperty Kelas

Definisi

Mewakili properti dependensi yang terdaftar dengan sistem properti dependensi. Properti dependensi menyediakan dukungan untuk ekspresi nilai, pengikatan data, animasi, dan pemberitahuan perubahan properti. Untuk informasi selengkapnya tentang bagaimana nilai DependencyProperty berfungsi sebagai pengidentifikasi untuk properti dependensi, lihat Gambaran umum properti dependensi.

public ref class DependencyProperty sealed
/// [Windows.Foundation.Metadata.ContractVersion(Windows.Foundation.UniversalApiContract, 65536)]
/// [Windows.Foundation.Metadata.MarshalingBehavior(Windows.Foundation.Metadata.MarshalingType.Agile)]
/// [Windows.Foundation.Metadata.Threading(Windows.Foundation.Metadata.ThreadingModel.Both)]
class DependencyProperty final
[Windows.Foundation.Metadata.ContractVersion(typeof(Windows.Foundation.UniversalApiContract), 65536)]
[Windows.Foundation.Metadata.MarshalingBehavior(Windows.Foundation.Metadata.MarshalingType.Agile)]
[Windows.Foundation.Metadata.Threading(Windows.Foundation.Metadata.ThreadingModel.Both)]
public sealed class DependencyProperty
Public NotInheritable Class DependencyProperty
See Remarks
Warisan
Object Platform::Object IInspectable DependencyProperty
Atribut

Persyaratan Windows

Rangkaian perangkat
Windows 10 (diperkenalkan dalam 10.0.10240.0)
API contract
Windows.Foundation.UniversalApiContract (diperkenalkan dalam v1.0)

Contoh

Contoh ini menunjukkan penggunaan dasar di mana DependencyProperty ditetapkan sebagai anggota statis publik kelas. Ini dilakukan dengan memanggil Daftar dan menyimpan nilai yang dikembalikan sebagai anggota kelas . Untuk contoh selengkapnya, lihat Properti dependensi kustom.

public class Fish : Control
{
    public static readonly DependencyProperty SpeciesProperty =
    DependencyProperty.Register(
    "Species",
    typeof(String),
    typeof(Fish), null
    );
    public string Species
    {
        get { return (string)GetValue(SpeciesProperty); }
        set { SetValue(SpeciesProperty, (string)value); }
    }
}
Public Class Fish
    Inherits Control

    Public Shared ReadOnly SpeciesProperty As DependencyProperty = _
    DependencyProperty.Register(
    "Species", _
    GetType(String), _
    GetType(Fish), _
    Nothing)
    Public Property Species As String
        Get
            Species = CType(GetValue(SpeciesProperty), String)
        End Get
        Set(value As String)
            SetValue(SpeciesProperty, value)
        End Set
    End Property
End Class

Contoh ekstensi komponen Visual C++ (C++/CX) tidak ditampilkan di sini karena harus diperhitungkan dengan sangat berbeda dari contoh Microsoft .NET, dan melibatkan beberapa file kode yang berbeda. Lihat contoh di Properti dependensi kustom.

Keterangan

Konsep properti dependensi dibahas secara rinci dalam gambaran umum properti Dependensi topik.

Instans DependencyProperty sering dirujuk dalam dokumentasi sebagai pengidentifikasi properti dependensi. Pengidentifikasi menyediakan cara untuk merujuk ke properti dependensi yang didaftarkan ke jenis pemilik DependencyObject tertentu. Ketika jenis pemilik mendaftarkan properti , jenis pemilik mengekspos instans DependencyProperty sebagai pengidentifikasi, yang merupakan anggota statis dari kelas pemilik.

Pemilik DependencyObject menyediakan penyimpanan properti untuk properti dependensi. Saat bekerja dengan properti dependensi dalam kode, Anda mungkin menggunakan pengidentifikasi DependencyProperty sebagai input untuk panggilan ke metode sistem properti seperti SetValue. Namun, dalam kebanyakan kasus, mendapatkan atau mengatur properti dependensi lebih sederhana dengan mendapatkan atau mengatur pembungkus; konsep ini dijelaskan dalam Gambaran umum properti Dependensi.

DependencyProperty mendukung konversi asli untuk sintaks atribut XAML untuk mengisi nilai, yang digunakan saat Setter menentukan nilai Propertinya . Konversi ini menggunakan formulir ownerTypeName**.**propertyName untuk string input.

Catatan

Sintaks terkait yang juga dapat digunakan untuk menentukan properti berdasarkan nama dan diperlukan oleh data tertentu dan API animasi adalah sintaks jalur properti. Jalur properti dapat digunakan untuk mereferensikan struktur kelas yang memiliki properti dan nilai properti tersebut. Untuk informasi selengkapnya, lihat Sintaks jalur properti.

Tip

Jika Anda memprogram menggunakan bahasa Microsoft .NET (C# atau Microsoft Visual Basic), jenis TypeName diproyeksikan sebagai System.Type. Saat pemrograman menggunakan C#, adalah umum untuk menggunakan operator typeof untuk mendapatkan referensi ke System.Type jenis. Di Microsoft Visual Basic, gunakan GetType. Jika Anda menggunakan ekstensi komponen Visual C++ (C++/CX)), tempat Anda harus membuat struktur pembantu TypeName , Anda dapat menggunakan ekstensi komponen typeid.

Windows Runtime mengimplementasikan fitur bahasa properti terlampir XAML dengan pengidentifikasi DependencyProperty dan penyimpanan properti pada DependencyObject. Untuk informasi selengkapnya, lihat Gambaran umum properti terlampir.

Properti dependensi kustom

Jika Anda ingin properti pada jenis kustom Anda mendukung ekspresi nilai, pengikatan data, atau animasi, Anda harus mendukung properti dengan properti dependensi dengan mengikuti panduan berikut:

  • Daftarkan properti dependensi menggunakan metode Register , yang mengembalikan DependencyProperty. Ini adalah pengidentifikasi properti dependensi Anda. Anda harus mengekspos objek ini sebagai properti baca-saja statis yang dapat diakses di kelas Anda. Menurut konvensi, nama bidang pengidentifikasi DependencyProperty ini harus diakhbungi dengan "Properti".
  • Selama pendaftaran, Anda dapat memberikan PropertyMetadata untuk properti untuk menentukan perilaku properti lebih lanjut.
  • Berikan aksesor get dan set untuk properti: ini adalah pembungkus properti, dan akan menyederhanakan akses ke properti Anda untuk semua pemanggil.

Referensi XAML ke nama properti dependensi

Beberapa properti yang biasanya diatur dalam markup XAML menggunakan DependencyProperty sebagai nilainya. Misalnya, Anda mengatur Setter.Property di XAML. Untuk mengatur properti seperti itu di XAML, Anda menentukan nama properti dependensi sebagai nilai atribut.

Untuk Setter.Property , jenis dari mana Anda mereferensikan nama properti dependensi sudah dilingkup oleh TargetType dari Gaya tempat Setter berada. Untuk properti dependensi pada objek TargetType , Anda dapat menentukan nilai Setter.Property menggunakan nama sederhana properti dependensi. Misalnya, jika Anda memiliki Gaya yang menargetkan Slider, dan Anda ingin menata properti Orientasi , nilai atribut Properti bisa hanya "Orientasi". Nama sederhana juga berfungsi selama properti dependensi berasal dari kelas dalam pewarisan yang lebih dalam dari jenis target. Misalnya, untuk menata properti Visibilitas dalam Gaya untuk Penggeser, nilai atribut Properti "Visibilitas" akan berfungsi. Dalam hal ini Visibilitas didefinisikan oleh UIElement, tetapi mewarisi ke Slider.

Anda juga dapat menggunakan Setter.Property untuk mereferensikan nama properti terlampir. Untuk nilai atribut, gunakan formulir AttachedPropertyOwner.AttachedPropertyName, seperti yang akan Anda gunakan untuk mengatur properti terlampir tersebut sebagai atribut di XAML. Misalnya, berikut adalah Setter yang mengatur properti terlampir AutomationProperties.ItemType dalam Gaya: <Setter Property="AutomationProperties.ItemType" Value="Navigation Button"/>

Catatan

Nama properti dependensi bukan nama pengidentifikasi properti statis DependencyProperty. Ini adalah string nama tempat properti terdaftar, dan nama yang merupakan nama penggunaan umum untuk properti tersebut dalam pemrograman Windows Runtime saat diekspos oleh Microsoft IntelliSense dan dokumentasi referensi. Dengan kata lain, Anda tidak ingin string yang Anda tentukan agar Setter.Property di XAML diakhiri dengan "Properti" (kecuali untuk beberapa kasus langka di mana properti dependensi benar-benar berisi akhiran "Properti").

Menggunakan DependencyProperty (pengidentifikasi properti dependensi) dalam kode

Ada beberapa metode yang merupakan metode utilitas untuk sistem properti Windows Runtime yang menggunakan nilai DependencyProperty sebagai parameter input. Ini termasuk:

Properti

UnsetValue

Menentukan nilai statis yang digunakan oleh sistem properti daripada null untuk menunjukkan bahwa properti ada, tetapi tidak memiliki nilai yang ditetapkan oleh sistem properti atau oleh kode aplikasi apa pun.

Metode

GetMetadata(TypeName)

Mengambil nilai metadata properti untuk properti dependensi seperti yang didaftarkan ke jenis . Anda menentukan jenis info yang Anda inginkan sebagai referensi jenis.

Register(String, TypeName, TypeName, PropertyMetadata)

Mendaftarkan properti dependensi dengan nama properti, jenis properti, jenis pemilik, dan metadata properti yang ditentukan untuk properti. Gunakan metode ini saat menentukan atau menginisialisasi kelas turunan DependencyObject yang akan memiliki properti dependensi terdaftar.

RegisterAttached(String, TypeName, TypeName, PropertyMetadata)

Mendaftarkan properti dependensi terlampir dengan nama properti, jenis properti, jenis pemilik, dan metadata properti yang ditentukan untuk properti .

Berlaku untuk

Lihat juga