Bagikan melalui


Gambaran Umum Elemen Dasar

Persentase kelas yang tinggi di Windows Presentation Foundation (WPF) berasal dari empat kelas yang biasanya disebut dalam dokumentasi SDK sebagai kelas elemen dasar. Kelas-kelas ini adalah UIElement, FrameworkElement, ContentElement, dan FrameworkContentElement. Kelas DependencyObject ini juga terkait, karena merupakan kelas dasar umum dari dan UIElementContentElement

API Elemen Dasar di Kelas WPF

Keduanya UIElement dan ContentElement berasal dari DependencyObject, melalui jalur yang agak berbeda. Pemisahan pada tingkat ini berkaitan dengan bagaimana UIElement atau ContentElement digunakan dalam antarmuka pengguna dan tujuan apa yang mereka layani dalam aplikasi. UIElement juga memiliki Visual hierarki kelasnya, yang merupakan kelas yang mengekspos dukungan grafis tingkat bawah yang mendasar Windows Presentation Foundation (WPF). Visual menyediakan kerangka kerja penyajian dengan menentukan wilayah layar persegi panjang independen. Dalam praktiknya, UIElement adalah untuk elemen yang akan mendukung model objek yang lebih besar, dimaksudkan untuk merender dan tata letak ke wilayah yang dapat digambarkan sebagai wilayah layar persegi panjang, dan di mana con mode tenda l sengaja lebih terbuka, untuk memungkinkan kombinasi elemen yang berbeda. ContentElement tidak berasal dari Visual; modelnya adalah bahwa ContentElement akan dikonsumsi oleh sesuatu yang lain, seperti pembaca atau penampil yang kemudian akan menafsirkan elemen dan menghasilkan lengkap Visual untuk dikonsumsi Windows Presentation Foundation (WPF). Kelas tertentu UIElement dimaksudkan untuk menjadi host konten: mereka menyediakan hosting dan penyajian untuk satu atau beberapa ContentElement kelas (DocumentViewer adalah contoh kelas seperti itu). ContentElement digunakan sebagai kelas dasar untuk elemen dengan model objek yang agak lebih kecil dan bahwa lebih banyak alamat teks, informasi, atau konten dokumen yang mungkin dihosting dalam UIElement.

Tingkat Kerangka Kerja dan Tingkat Inti

UIElement berfungsi sebagai kelas dasar untuk FrameworkElement, dan ContentElement berfungsi sebagai kelas dasar untuk FrameworkContentElement. Alasan untuk tingkat kelas berikutnya ini adalah untuk mendukung tingkat inti WPF yang terpisah dari tingkat kerangka kerja WPF, dengan divisi ini juga ada dalam bagaimana API dibagi antara rakitan PresentationCore dan PresentationFramework. Tingkat kerangka kerja WPF menyajikan solusi yang lebih lengkap untuk kebutuhan aplikasi dasar, termasuk implementasi manajer tata letak untuk presentasi. Tingkat inti WPF menyediakan cara untuk menggunakan banyak WPF tanpa mengambil overhead rakitan tambahan. Perbedaan antara tingkat ini sangat jarang penting untuk sebagian besar skenario pengembangan aplikasi yang khas, dan secara umum Anda harus memikirkan API WPF secara keseluruhan dan tidak khawatir dengan perbedaan antara tingkat kerangka kerja WPF dan tingkat inti WPF. Anda mungkin perlu tahu tentang perbedaan tingkat jika desain aplikasi Anda memilih untuk menggantikan sejumlah besar fungsionalitas tingkat kerangka kerja WPF, misalnya jika solusi keseluruhan Anda sudah memiliki implementasi komposisi dan tata letak antarmuka pengguna (UI) sendiri.

Memilih Elemen Mana yang Akan Berasal dari

Cara paling praktis untuk membuat kelas kustom yang memperluas WPF adalah dengan berasal dari salah satu kelas WPF di mana Anda mendapatkan sebanyak mungkin fungsionalitas yang Anda inginkan melalui hierarki kelas yang ada. Bagian ini mencantumkan fungsionalitas yang dilengkapi dengan tiga kelas elemen terpenting untuk membantu Anda memutuskan kelas mana yang akan diwarisi.

Jika Anda menerapkan kontrol, yang benar-benar salah satu alasan yang lebih umum untuk turun dari kelas WPF, Anda mungkin ingin berasal dari kelas yang merupakan kontrol praktis, kelas dasar keluarga kontrol, atau setidaknya dari Control kelas dasar. Untuk beberapa panduan dan contoh praktis, lihat Gambaran Umum Penulisan Kontrol.

Jika Anda tidak membuat kontrol dan perlu berasal dari kelas yang lebih tinggi dalam hierarki, bagian berikut dimaksudkan sebagai panduan untuk karakteristik apa yang didefinisikan di setiap kelas elemen dasar.

Jika Anda membuat kelas yang berasal dari DependencyObject, Anda mewarisi fungsionalitas berikut:

  • GetValue dukungan dan SetValue dukungan, serta dukungan sistem properti umum.

  • Kemampuan untuk menggunakan properti dependensi dan properti terlampir yang diimplementasikan sebagai properti dependensi.

Jika Anda membuat kelas yang berasal dari UIElement, Anda mewarisi fungsionalitas berikut selain yang disediakan oleh DependencyObject:

  • Dukungan dasar untuk nilai properti animasi. Untuk informasi selengkapnya, lihat gambaran umum Animation.

  • Dukungan peristiwa input dasar, dan dukungan perintah. Untuk informasi selengkapnya, lihat Gambaran Umum Input dan Gambaran Umum Perintah.

  • Metode virtual yang dapat ditimpa untuk memberikan informasi ke sistem tata letak.

Jika Anda membuat kelas yang berasal dari FrameworkElement, Anda mewarisi fungsionalitas berikut selain yang disediakan oleh UIElement:

  • Dukungan untuk gaya dan papan cerita. Untuk informasi selengkapnya, lihat Style dan Ringkasan Papan Cerita.

  • Dukungan untuk pengikatan data. Untuk informasi selengkapnya, lihat Gambaran Umum Pengikatan Data.

  • Dukungan untuk referensi sumber daya dinamis. Untuk informasi selengkapnya, lihat Sumber Daya XAML.

  • Dukungan pewarisan nilai properti, dan bendera lain dalam metadata yang membantu melaporkan kondisi tentang properti ke layanan kerangka kerja seperti pengikatan data, gaya, atau implementasi kerangka kerja tata letak. Untuk informasi selengkapnya, lihat Metadata Properti Kerangka Kerja.

  • Konsep pohon logis. Untuk informasi selengkapnya, lihat Pohon di WPF.

  • Dukungan untuk implementasi tingkat kerangka kerja WPF praktis dari sistem tata letak, termasuk OnPropertyChanged penimpaan yang dapat mendeteksi perubahan pada properti yang memengaruhi tata letak.

Jika Anda membuat kelas yang berasal dari ContentElement, Anda mewarisi fungsionalitas berikut selain yang disediakan oleh DependencyObject:

  • Dukungan untuk animasi. Untuk informasi selengkapnya, lihat gambaran umum Animation.

  • Dukungan peristiwa input dasar, dan dukungan perintah. Untuk informasi selengkapnya, lihat Gambaran Umum Input dan Gambaran Umum Perintah.

Jika Anda membuat kelas yang berasal dari FrameworkContentElement, Anda mendapatkan fungsionalitas berikut selain yang disediakan oleh ContentElement:

  • Dukungan untuk gaya dan papan cerita. Untuk informasi selengkapnya, lihat Style dan Gambaran Umum Animasi.

  • Dukungan untuk pengikatan data. Untuk informasi selengkapnya, lihat Gambaran Umum Pengikatan Data.

  • Dukungan untuk referensi sumber daya dinamis. Untuk informasi selengkapnya, lihat Sumber Daya XAML.

  • Dukungan pewarisan nilai properti, dan bendera lain dalam metadata yang membantu melaporkan kondisi tentang properti ke layanan kerangka kerja seperti pengikatan data, gaya, atau implementasi kerangka kerja tata letak. Untuk informasi selengkapnya, lihat Metadata Properti Kerangka Kerja.

  • Anda tidak mewarisi akses ke modifikasi sistem tata letak (seperti ArrangeOverride). Implementasi sistem tata letak hanya tersedia di FrameworkElement. Namun, Anda mewarisi OnPropertyChanged penimpaan yang dapat mendeteksi perubahan pada properti yang memengaruhi tata letak dan melaporkannya ke host konten apa pun.

Con mode tenda ls didokumentasikan untuk berbagai kelas. Con mode tenda l untuk kelas adalah salah satu faktor yang mungkin harus Anda pertimbangkan jika Anda ingin menemukan kelas yang sesuai untuk diperoleh. Untuk informasi selengkapnya, lihat Model Konten WPF.

Kelas Dasar Lainnya

DispatcherObject

DispatcherObject memberikan dukungan untuk model utas WPF dan memungkinkan semua objek yang dibuat untuk aplikasi WPF dikaitkan dengan Dispatcher. Bahkan jika Anda tidak berasal dari UIElement, , DependencyObjectatau Visual, Anda harus mempertimbangkan untuk mendapatkan dari DispatcherObject untuk mendapatkan dukungan model utas ini. Untuk informasi selengkapnya, lihat Model Utas.

Visual

Visual mengimplementasikan konsep objek 2D yang umumnya memerlukan presentasi visual di wilayah yang kira-kira persegi panjang. Penyajian aktual dari suatu Visual terjadi di kelas lain (tidak mandiri), tetapi Visual kelas menyediakan jenis yang diketahui yang digunakan oleh proses penyajian di berbagai tingkatan. Visual menerapkan pengujian hit, tetapi tidak mengekspos peristiwa yang melaporkan positif pengujian hit (ini ada di UIElement). Untuk informasi selengkapnya, lihat Pemrograman Lapisan Visual.

Dapat di-freezable

Freezable mensimulasikan imutabilitas dalam objek yang dapat diubah dengan menyediakan sarana untuk menghasilkan salinan objek ketika objek yang tidak dapat diubah diperlukan atau diinginkan karena alasan performa. Jenis ini Freezable memberikan dasar umum untuk elemen grafis tertentu seperti geometri dan kuas, serta animasi. Terutama, Freezable bukan Visual; dapat menyimpan properti yang menjadi subproperti ketika Freezable diterapkan untuk mengisi nilai properti objek lain, dan subproperti tersebut dapat memengaruhi penyajian. Untuk informasi selengkapnya, lihat Gambaran Umum Objek Freezable.

Animatable

Animatable adalah Freezable kelas turunan yang secara khusus menambahkan lapisan kontrol animasi dan beberapa anggota utilitas sehingga properti animasi saat ini dapat dibedakan dari properti yang tidak dianimasikan.

Kontrol

Control adalah kelas dasar yang dimaksudkan untuk jenis objek yang berbagai istilah kontrol atau komponen, tergantung pada teknologi. Secara umum, kelas kontrol WPF adalah kelas yang secara langsung mewakili kontrol UI atau berpartisipasi erat dalam komposisi kontrol. Fungsionalitas utama yang Control memungkinkan adalah templat kontrol.

Baca juga