Bagikan melalui


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(Microsoft.UI.Xaml.WinUIContract, 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(Microsoft.UI.Xaml.WinUIContract), 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
Warisan
Object Platform::Object IInspectable DependencyProperty
Atribut

Contoh

Contoh ini menunjukkan penggunaan dasar di mana DependencyProperty ditetapkan sebagai anggota statis publik kelas. Ini dilakukan dengan memanggil Daftar dan menyimpan nilai pengembalian 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); }
    }
}

Contoh ekstensi komponen Visual C++ (C++/CX) tidak ditampilkan di sini karena harus diperhitungkan sepenuhnya 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 DependencyProperty pengidentifikasi 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 memproyeksikan sebagai System.Type. Saat pemrograman menggunakan C#, biasanya menggunakan typeof operator untuk mendapatkan referensi ke System.Type jenis. Di Microsoft Visual Basic, gunakan GetType. Jika Anda menggunakan ekstensi komponen Visual C++ (C++/CX)), di mana Anda harus membuat struktur pembantu TypeName , Anda dapat menggunakan ekstensi komponen typeid.

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

Properti dependensi kustom

Jika Anda ingin properti pada tipe 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 ini DependencyProperty harus diakhir dengan "Properti".
  • Selama pendaftaran, Anda dapat menyediakan PropertyMetadata untuk properti untuk menentukan perilaku properti lebih lanjut.
  • Menyediakan get dan set pengaktor untuk properti: ini adalah pembungkus properti, dan akan menyederhanakan akses ke properti Anda untuk semua penelepon.

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 tempat Anda mereferensikan nama properti dependensi sudah dilingkup oleh TargetTypegaya 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 hanya dapat berupa "Orientasi". Nama sederhana juga berfungsi selama properti dependensi berasal dari kelas dalam pewarisan yang lebih dalam dari jenis target. Misalnya, untuk menata properti Visibilitas di 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 DependencyProperty pengidentifikasi properti statis. 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 DependencyProperty nilai sebagai parameter input. Ini termasuk:

Properti

UnsetValue

Menentukan nilai statis yang digunakan oleh sistem properti daripada null 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 terdaftar pada jenis. Anda menentukan tipe yang Anda inginkan infonya 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