Saya baru saja datang untuk mempercepat pada WPF dan ingin membuat kontrol WPF dapat digunakan kembali.
Ketika saya melihat opsi untuk membuat proyek di Visual Studio, saya melihat "Perpustakaan Kontrol Pengguna WPF" dan "Perpustakaan Kontrol Kustom WPF". Tidak jelas bagi saya apa perbedaan antara mereka dan pencarian Google saya belum menemukan penjelasan yang layak.
Saya ingin memahami perbedaan di antara mereka dan idealnya melihat beberapa contoh kapan harus menggunakan satu di atas yang lain.
wpf
user-controls
custom-controls
17 dari 26
sumber
sumber
Jawaban:
Dalam praktiknya kontrol khusus adalah sesuatu yang Anda terapkan pada level kode sementara Anda dapat menggunakan XAML untuk kontrol pengguna. Kontrol kustom memperluas salah satu kelas basis kontrol WPF dan memberikan fungsionalitas tambahan melalui kode sehingga semua logika dan representasi tambahan harus diimplementasikan di dalam kode.
Kontrol pengguna secara teknis adalah kontrol konten normal yang dapat diperluas di beberapa bagian dalam kode, tetapi biasanya diperluas dengan menempatkan kontrol lain di dalamnya. Jadi seperti yang disebutkan Kent, UserControl adalah agregasi dari kontrol lain. Ini membatasi apa yang dapat Anda lakukan dengan kontrol pengguna secara signifikan. Lebih mudah digunakan tetapi lebih terbatas daripada kontrol kustom penuh.
Kontrol ini memiliki perbedaan kecil dari sudut pandang runtime. Saat membangun aplikasi dan menempatkan UserControl ke dalamnya, pohon kontrol akan memiliki template UserControl konkret di dalamnya. Jadi jika kita mempertimbangkan contoh lumpuh dari tombol khusus. Jika Anda menggunakan kontrol pengguna, Anda akan menambahkan tombol di dalam
<UserControl>
elemen. Saat menggunakan kontrol khusus, Anda akan mendapatkan kontrol itu sendiri dari tombol yang paling mungkin. Perbedaannya akan terlihat di pohon logis.Sementara kontrol kustom akan menyediakan pohon logis yang mirip dengan
UserControl akan memberikan pohon logis
Jadi pada akhirnya UserControl hanyalah ContentControl normal yang dapat Anda tambah sedikit dan Anda dapat menentukan sebelumnya kontennya. Kontrol kustom memberikan fleksibilitas yang lebih besar dengan harga kemudahan implementasi karena Anda harus melakukan semua logika dan interaksi dalam kode alih-alih mendapatkan manfaat XAML.
Meskipun setelah semua ini, saya tidak berpikir ada banyak perbedaan dalam template Visual Studio. Kemungkinan besar Kontrol Kustom Visual Studio hanya membuat proyek dengan kontrol kustom kosong sedangkan proyek Kontrol Pengguna adalah proyek dengan kontrol pengguna kosong. Anda nanti dapat menambahkan segala jenis barang ke proyek.
Memperbarui
Dan pendapat saya tentang kapan menggunakan kontrol kustom dan kontrol pengguna adalah bahwa jika Anda bisa menyelesaikan sesuatu dengan kontrol pengguna dan elemen kontrol tambahan di pohon logis tidak mengganggu Anda, gunakan kontrol pengguna karena jauh lebih mudah untuk dilakukan. buat dan pertahankan. Gunakan kontrol khusus hanya jika Anda memiliki alasan untuk tidak menggunakan kontrol pengguna.
sumber
A
Control
mewakili beberapa perilaku yang skinnable (dapat dipahami), sedangkan aUserControl
umumnya adalah agregasi tingkat tinggi dariControl
s yang spesifik untuk suatu aplikasi.Info lebih lanjut tersedia di sini .
sumber