Bagikan melalui


Metadata Properti Kerangka Kerja

Opsi metadata properti kerangka kerja dilaporkan untuk properti elemen objek yang dianggap berada di tingkat kerangka kerja WPF dalam arsitektur Windows Presentation Foundation (WPF). Secara umum penunjukan tingkat kerangka kerja WPF memerlukan fitur seperti penyajian, pengikatan data, dan penyempurnaan sistem properti ditangani oleh API presentasi WPF dan executable. Metadata properti kerangka kerja dikueri oleh sistem ini untuk menentukan karakteristik khusus fitur dari properti elemen tertentu.

Prasyarat

Topik ini mengasumsikan bahwa Anda memahami properti dependensi dari perspektif konsumen properti dependensi yang ada pada kelas Windows Presentation Foundation (WPF), dan telah membaca Gambaran Umum Properti Dependensi. Anda juga harus membaca Metadata Properti Dependensi.

Apa yang Dikomunikasikan oleh Metadata Properti Kerangka Kerja

Metadata properti kerangka kerja dapat dibagi menjadi kategori berikut:

  • Melaporkan properti tata letak yang memengaruhi elemen (AffectsArrange, AffectsMeasure, AffectsRender). Anda dapat mengatur bendera ini dalam metadata jika properti memengaruhi aspek masing-masing, dan Anda juga menerapkan MeasureOverride / ArrangeOverride metode di kelas Anda untuk memberikan perilaku dan informasi penyajian tertentu ke sistem tata letak. Biasanya, implementasi seperti itu akan memeriksa pembatalan properti di properti dependensi di mana salah satu properti tata letak ini benar dalam metadata properti, dan hanya pembatalan yang perlu meminta kode tata letak baru.

  • Melaporkan properti tata letak yang memengaruhi elemen induk elemen (AffectsParentArrange, AffectsParentMeasure). Beberapa contoh di mana bendera ini diatur secara default adalah FixedPage.Left dan Paragraph.KeepWithNext.

  • Inherits. Secara default, properti dependensi tidak mewarisi nilai. OverridesInheritanceBehavior memungkinkan jalur pewarisan juga melakukan perjalanan ke pohon visual, yang diperlukan untuk beberapa skenario komposit kontrol.

    Catatan

    Istilah "mewarisi" dalam konteks nilai properti berarti sesuatu yang spesifik untuk properti dependensi; itu berarti bahwa elemen anak dapat mewarisi nilai properti dependensi aktual dari elemen induk karena kemampuan tingkat kerangka kerja WPF dari sistem properti WPF. Ini tidak ada hubungannya langsung dengan jenis kode terkelola dan warisan anggota melalui jenis turunan. Untuk detailnya, lihat Pewarisan Nilai Properti.

  • Melaporkan karakteristik pengikatan data (IsNotDataBindable, BindsTwoWayByDefault). Secara default, properti dependensi dalam kerangka kerja mendukung pengikatan data, dengan perilaku pengikatan satu arah. Anda dapat menonaktifkan pengikatan data jika tidak ada skenario untuk itu apa pun (karena mereka dimaksudkan untuk fleksibel dan dapat diperluas, tidak ada banyak contoh properti tersebut dalam API WPF default). Anda dapat mengatur pengikatan untuk memiliki default dua arah untuk properti yang mengikat perilaku kontrol di antara bagian komponennya (IsSubmenuOpen adalah contoh) atau di mana pengikatan dua arah adalah skenario umum dan diharapkan untuk pengguna (Text adalah contoh). Mengubah metadata terkait pengikatan data hanya memengaruhi default; berdasarkan per-pengikatan bahwa default selalu dapat diubah. Untuk detail tentang mode pengikatan dan pengikatan secara umum, lihat Gambaran Umum Pengikatan Data.

  • Melaporkan apakah properti harus di-journal oleh aplikasi atau layanan yang mendukung jurnal (Journal). Untuk elemen umum, jurnal tidak diaktifkan secara default, tetapi diaktifkan secara selektif untuk kontrol input pengguna tertentu. Properti ini dimaksudkan untuk dibaca oleh layanan jurnal termasuk implementasi WPF jurnal, dan biasanya diatur pada kontrol pengguna seperti pilihan pengguna dalam daftar yang harus dipertahankan di seluruh langkah navigasi. Untuk informasi tentang jurnal, lihat Gambaran Umum Navigasi.

Membaca FrameworkPropertyMetadata

Masing-masing properti yang ditautkan di atas adalah properti spesifik yang FrameworkPropertyMetadata ditambahkan ke kelas UIPropertyMetadatadasar langsungnya . Masing-masing properti ini akan secara false default. Permintaan metadata untuk properti di mana mengetahui nilai properti ini penting harus mencoba mentransmisikan metadata yang dikembalikan ke FrameworkPropertyMetadata, lalu memeriksa nilai properti individual sesuai kebutuhan.

Menentukan Metadata

Saat Anda membuat instans metadata baru untuk tujuan menerapkan metadata ke pendaftaran properti dependensi baru, Anda memiliki pilihan kelas metadata mana yang akan digunakan: dasar PropertyMetadata atau beberapa kelas turunan seperti FrameworkPropertyMetadata. Secara umum, Anda harus menggunakan FrameworkPropertyMetadata, terutama jika properti Anda memiliki interaksi dengan sistem properti dan fungsi WPF seperti tata letak dan pengikatan data. Opsi lain untuk skenario yang lebih canggih adalah mendapatkan dari FrameworkPropertyMetadata untuk membuat kelas pelaporan metadata Anda sendiri dengan informasi tambahan yang dibawa dalam anggotanya. Atau Anda dapat menggunakan PropertyMetadata atau UIPropertyMetadata untuk mengomunikasikan tingkat dukungan untuk fitur implementasi Anda.

Untuk properti yang ada (AddOwner atau OverrideMetadata panggilan), Anda harus selalu mengambil alih dengan jenis metadata yang digunakan oleh pendaftaran asli.

Jika Anda membuat FrameworkPropertyMetadata instans, ada dua cara untuk mengisi metadata tersebut dengan nilai untuk properti tertentu yang mengomunikasikan karakteristik properti kerangka kerja:

  1. FrameworkPropertyMetadata Gunakan tanda tangan konstruktor yang memungkinkan flags parameter. Parameter ini harus diisi dengan semua nilai gabungan yang diinginkan dari FrameworkPropertyMetadataOptions bendera enumerasi.

  2. Gunakan salah satu tanda tangan tanpa flags parameter, lalu atur setiap properti FrameworkPropertyMetadata Boolean pelaporan ke true untuk setiap perubahan karakteristik yang diinginkan. Jika Anda melakukan ini, Anda harus mengatur properti ini sebelum elemen apa pun dengan properti dependensi ini dibangun; properti Boolean adalah baca-tulis untuk memungkinkan perilaku ini menghindari flags parameter dan masih mengisi metadata, tetapi metadata harus disegel secara efektif sebelum penggunaan properti. Dengan demikian, mencoba mengatur properti setelah metadata diminta akan menjadi operasi yang tidak valid.

Perilaku Penggabungan Metadata Properti Kerangka Kerja

Saat Anda mengambil alih metadata properti kerangka kerja, karakteristik metadata yang berbeda digabungkan atau diganti.

Perilaku ini diimplementasikan oleh Merge, dan dapat diambil alih pada kelas metadata turunan.

Baca juga