Sudah lebih dari setahun sejak saya menulis artikel terakhir. WPF terlalu besar dan terlalu banyak hal untuk ditulis. Saya masih akan fokus pada kontrol khusus untuk memperluas poin teknis yang terkait dengannya pada pembahasan kali ini kita akan membahas Yang terpenting adalah properti ketergantungan WPF Teman-teman yang pernah bersentuhan dengannya harus memiliki pemahaman tentangnya, tetapi sebelum kita berbicara tentang properti ketergantungan WPF, mari kita lihat bagaimana propertinya. di .net digunakan sebelum WPF muncul.
Masalah atribut umum
c# properti dasar
Properti kontrol khusus ASP.NET
Properti kontrol kustom WinForm
Properti kontrol kustom Javascript
c# properti dasar
namespace WPFControlTutorialPart2_Basic
{
Orang kelas publik
{
string pribadi _nama;
Nama string publik
{
dapatkan { kembalikan _nama }
setel { _nama = nilai }
}
//properti otomatis
public int Usia { dapatkan; }
}
}
Hal di atas harus dianggap sebagai atribut paling dasar dari C#, dan semua orang sudah familiar dengannya.
Catatan: Properti default tidak diinisialisasi, jika tidak, banyak kesalahan yang tidak diketahui dapat terjadi.
(Anda dapat memilih untuk membaca yang berikut ini. Jika Anda pernah mengenal teknologi berikut, sebenarnya sangat sederhana)
Properti kontrol khusus ASP.NET
namespace WPFControlTutorialPart2_WebApp
{
kelas publik WebFromControl : WebControl
{
string pribadi _controlName;
string publik Nama Kontrol
{
mendapatkan
{
kembalikan _controlName;
}
mengatur
{
_controlName = nilai;
}
}
override yang dilindungi void RenderContents (keluaran HtmlTextWriter)
{
output.Write("Nama kontrolnya adalah:"+NamaKontrol);
}
}
}
Di atas adalah kontrol server web kustom sederhana.
Kontrol asp.net berfokus pada rendering. Metode RenderContents akan dipanggil setiap kali halaman di-refresh, sehingga properti akan dirender ulang terlepas dari apakah properti telah berubah atau tidak perubahan untuk memberitahukan penggambaran ulang UI.
Catatan: Apabila atribut ControlName wajib mempunyai nilai untuk menjamin keabsahan hasil input, maka dapat diproses pada metode get.
mendapatkan
{
if (_controlName == null) _controlName = string.Kosong;
kembalikan _controlName;
}
Properti kontrol kustom WinForm
Ketika properti berubah, properti tersebut tidak digambar ulang. Anda harus memanggil metode Invalidate secara manual untuk memasukkan metode OnPaint untuk menggambar ulang.
Catatan: Jika Anda ingin menggambar ulang antarmuka, Anda harus memanggil metode ini secara manual
Properti kontrol kustom JavaScript
<div id="demoDiv" style="background-color: Red">halo</div>
<skrip>
fungsi ElementControl(nama elemen) {
this.element = dokumen.getElementById(elementName);
}
ElementControl.prototype.setWidth = fungsi(lebar) {
this.element.style.width = lebar;
}
var obj = new ElementControl("demoDiv");
obj.setWidth("halo");
</skrip>
Tipe variabel JavaScript tidak memiliki tipe yang kuat. Misalnya, saat mengatur lebar dom, tipenya hanya boleh berupa bilangan bulat. Jika nilai diteruskan sebagai string, kesalahan akan terjadi (tentu saja ini buatan).
(Saya tidak tahu apakah orang yang telah melakukan kontrol front-end js merasakan hal ini. Mendefinisikan properti dan kemudian menetapkan ulang dan menggambar ulang kontrol adalah hal yang menyakitkan. Itu harus disesuaikan secara manual, dan itu akan mempengaruhi keseluruhan desain kontrol. )
Catatan: Verifikasi validitas penetapan atribut.
Dari contoh di atas, kita dapat melihat bahwa atribut murni tidak dapat memenuhi kebutuhan program.
Persyaratan di atas adalah perlu, sering terjadi, dan sangat sering terjadi.
Solusi terstandar
Di atas memperkenalkan serangkaian masalah dengan atribut. Jika ada masalah, akan ada solusi yang disederhanakan.
Berikut ringkasan pribadinya:
Ketika suatu teknologi relatif kompleks, seseorang akan menentukan serangkaian standar untuk menyederhanakan teknologi dan meningkatkan efisiensi produksi.
Tidak peduli seberapa cermat perancang mempertimbangkannya, begitu standar ditetapkan, fleksibilitas akan hilang.
Standar mungkin bertentangan dengan kebiasaan pribadi Anda. Anda harus belajar menerima standar dan kembali ke topik WPF. Maka solusi di WPF adalah properti ketergantungan (DependencyProperty)
Oke, artikel ini hanyalah perkenalan saja. Jika Anda mengalami masalah tersebut saat menggunakan atribut, Anda pasti punya perasaan.
Jika Anda menyadari bahwa masalah di atas memang ada pada atribut, maka artikel ini telah menyelesaikan tugasnya.
Artikel ini tidak dimaksudkan untuk diperluas. Artikel berikutnya akan memperkenalkan kembali sistem properti ketergantungan WPF.
Semua orang dipersilakan untuk berdiskusi.