TOC

This article is currently in the process of being translated into Malay (~90% done).

About WPF:

WPF vs. WinForms

Pada bab terdahulu, kita telah berbincang tentang apakah itu WPF dan sedikit mengenai WinForms. Dalam bab ini, saya akan cuba membuat perbandingan di antara WPF dan WinForms, ini kerana walaupun kedua-duanya boleh digunakan untuk tujuan yang sama, terdapat BANYAK perbezaan di antara kedua-duanya. Jika anda tidak pernah menggunakan WinForms sebelum ini, dan tambahan pula jika WPF adalah rangka kerja GUI pertama anda, anda boleh melangkau sahaja bab ini, namun jika anda berminat terhadap perbezaan-perbezaannya silalah teruskan membaca.

Satu perbezaan paling penting di antara WinForms dan WPF adalah sementara WinForms hanyalah semata-mata satu lapisan di atas kawalan Windows standard (standard Windows controls, contohnya sebuah TextBox), WPF pula telah dibina dari kosong dan tidak bergantung kepada kawalan Windows standard dalam hampir semua situasi. Perbezaan ini mungkin kelihatan tidak berapa ketara, tapi ia sebenarnya bukan begitu, dan anda pasti akan perasan akan perbezaannya jika anda pernah menggunakan kerangkakerja (framework) yang bergantung kepada Win32/WinAPI.

Satu contoh terbaik tentang perkara ini ialah butang dengan imej dan teks di atasnya. Ini bukanlah kawalan Windows yang asas, jadi WinForms tidak menawarkan kebolehan ini secara langsung. Sebaliknya anda perlu melukis imej anda sendiri, mengatur cara butang anda sendiri yang menyokong imej atau menggunakan kawalan pihak ke-tiga. Dengan WPF, butang boleh mengandungi apa sahaja kerana ia pada asasnya sebuah kotak dengan kandungan dengan pelbagai keadaan (misalnya Tidak disentuh, melayang, ditekan). Butang WPF seperti "kelihatan kosong", seperti kebanyakan kawalan WPF lain, yang bermaksud ia boleh mengandungi pelbagai kawalan lain di dalamnya. Anda mahu butang dengan imej dan beberapa teks? Hanya letakkan Imej dan kawalan TextBlock di dalam butang dan anda sudah selesai! Anda tidak akan mendapat fleksibiliti seperti ini daripada kawalan WinForms yang asas, oleh sebab itu terdapat pasaran yang besar untuk melaksanakan kawalan yang agak mudah seperti butang dengan imej dan sebagainya.

Satu kelemahan bagi fleksibiliti ini ialah kadang kala anda perlu bekerja lebih keras untuk mencapai sesuatu yang sangat mudah dengan WinForms, kerana WinForms sememangnya dicipta untuk senario yang anda perlukan. Sekurang-kurangnya itulah yang anda rasakan pada mulanya, di mana anda mendapati diri anda mencipta templat untuk membuat ListView dengan imej dan beberapa teks yang sejajar dengan baik, sesuatu yang ListViewItem WinForms boleh lakukan dalam satu baris kod sahaja.

Ini hanyalah satu perbezaan, tetapi seiring anda menggunakan WPF, anda akan menyedari bahawa ia sebenarnya sebab utama bagi banyak perbezaan yang lain - WPF melakukan perkara dengan caranya sendiri, untuk lebih baik atau kadang kala lebih buruk. Anda tidak lagi terpaksa melakukan sesuatu dengan cara Windows, tetapi untuk mendapatkan fleksibiliti seperti ini, anda terpaksa bekerja lebih sedikit apabila anda sebenarnya hanya ingin melakukan sesuatu dengan cara Windows.

Berikut adalah senarai sepenuhnya secara subjektif kelebihan utama untuk WPF dan WinForms. Ia seharusnya memberi anda gambaran yang lebih baik tentang apa yang anda akan pelajari.

Kelebihan WPF

  • Ianya teknologi baru oleh itu ia lebih serasi dengan standard semasa
  • Microsoft menggunakannya untuk pelbagai applikasi baru. Contohnya Visual Studio
  • Ianya lebih fleksibel, jadi pengguna boleh melakukan lebih perkara tanpa perlu menulis atau membeli pengarah yang baru.
  • Apabila anda perlu menggunakan pengarah pihak ke-3, pembangun perisian pengarah ini biasanya akan lebih fokus kepada WPF kerana ianya baru.
  • XAML menjadikannya lebih mudah untuk menghasilkan dan mengubah GUI anda, selain ia membenarkan cara kerja dipecahkan antara desainer (XAML) dan pengaturcara (C#, VB.NET, dsb.)
  • Databinding, atau cantuman data yang membenarkan pengguna untuk mendapatkan pecahan data yang lebih bersih antara data dan layout.
  • Menggunakan pecutan perkakasan (hardware acceleration) untuk lukisan GUI, untuk pencapaian yang lebih baik
  • Ia membenarkan pengguna untuk mereka cipta antara muka pengguna untuk applikasi Windows dan applikasi Web (Silverlight/XBAP)

WinForms advantages

  • It's older and thereby more tried and tested
  • There are already a lot of 3rd party controls that you can buy or get for free
  • The designer in Visual Studio is still, as of writing, better for WinForms than for WPF, where you will have to do more of the work yourself with WPF