TOC

This article has been localized into Ukrainian by the community.

Про WPF:

WPF в порівнянні з WinForms

В попередньому розділі, ми поговорили про те що таке WPF та трохи про WinForms. В цьому розділі ми спробуємо порівняти ці дві платформи, тому що вони хоч і вирішують однакові завдання, проте між ними багато відмінностей. Якщо ви раніше ніколи не працювали з WinForms, або, якщо WPF це ваша перша платформа для побудови GUI, то ви можете пропустити цей розділ.

Однією з найважливіших відмінностей між WinForms та WPF є той факт, що WinForms — це просто надбудова над стандартними елементами керування Windows (наприклад TextBox), а WPF був розроблений з нуля, і майже ніколи не покладається на стандартні елементи керування Windows. Це може здатися незначною різницею, проте це не так, і якщо ви коли-небудь працювали з фреймворком що працює на Win32/WinAPI (як WinForms) ви неодмінно побачите значні відмінності.

Прекрасним прикладом цього є кнопка із зображенням та текстом в ній. Це не є стандартним елементом керування Windows, тому WinForms не надають такої можливості з початкового набору. Замість цього ви повинні відобразити зображення вручну, реалізувати свою власну кнопку, що підтримує зображення або використати елемент керування від інших розробників. У WPF, кнопка може містити будь-що, тому що, вона є по суті межею між її вмістом і різними її станами (наприклад ненатиснута, наведена, натиснута). WPF кнопка не містить чітких меж свого вмісту, як і більшість інших елементів WPF фреймворку, тобто кожен елемент може містити безліч інших елементів керування в собі. Хочите кнопку із зображенням і текстом? Просто додайте елементи Image та TextBlock всередину вашої кнопки і готово! Ви звісно, не отримаєте таку гнучкість елементів керування із звичайного набору елементів WinForms, саме тому існує великий діапазон простих реалізацій елементів керування на кшталт кнопки із зображенням та їм подібних елементів.

Недолік такої гнучкості полягає в тому що вам, може, доведеться докласти певних зусиль для досягнення того що в WinForms було зробити вкрай просто. Принаймні таке відчуття виникає на початку, коли з'ясовується що для створення ListView з картинками і відцентрованим текстом (те для чого в WinForms вистачало всього одного рядку коду) потрібно писати якісь шаблони.

Ми навели лише одну відмінність, але чим більше ви будете працювати з WPF тим більше ви будете розуміти що ця єдина різниця лежить в основі всіх інших відмінностей. В WPF все просто не так як в WinForms на гірше чи на краще.

Нижченаведений список є переліком повністю суб'єктивних переваг WPF і WinForms. Він допоможе краще зрозуміти різницю між двома платформами.

Переваги WPF

  • WPF новіша технологія у зв'язку з чим більше відповідає поточним стандартам.
  • Microsoft використовує WPF в багатьох нових програмах (наприклад Visual studio).
  • WPF більш гнучкий і ви можете досягти більшого без необхідності писати власні або купувати сторонні елементи керування.
  • Оскільки WPF новіша за WinForms, то коли вам все ж таки знадобляться якісь особливі елементи керування від інших розробників, то скоріш за все ці розробники буду більше зосереджені саме на WPF ніж на WinForms.
  • Використання XAML дозволяє розділити роботу між дизайнером і програмістом.
  • За рахунок зв'язування даних можна досягти більшого розділення даних і GUI.
  • WPF задіює графічний процесор для малювання GUI що прискорює роботу програму.
  • З WPF можна писати як програми для Windows так і для WWW (Silverlight/XBAP).

Переваги WinForms

  • WinForms існує вже давно і тому більш протестована.
  • Для WinForms існує дуже багато платних і безплатних компонентів.
  • На час написання цього матеріалу візуальний дизайнер що входить до складу Visual studio ще досі краще пристосований до WinForms більше ніж до WPF.